首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >叠加箱形图和线状图出海

叠加箱形图和线状图出海
EN

Stack Overflow用户
提问于 2019-07-13 00:26:57
回答 1查看 6.2K关注 0票数 1

我正在尝试在同一个框图上叠加一个箱形图(基于另一个变量的一系列箱形图)和该变量的中线的线形图。像下面这样的简单代码可以很好地工作。

代码语言:javascript
运行
复制
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

dfx=pd.DataFrame({'S':np.random.randint(10,100,9)*10,'C': 
['X','X','X','Y','Y','Y','Z','Z','Z']})

fig,ax=plt.subplots()
mx=dfx.groupby('C')['S'].median()
sns.boxplot(y='S',x='C',data=dfx,ax=ax)
sns.lineplot(y=mx.values,x=mx.index,ax=ax)
plt.show()

这给了我们

但是,当我使用与从csv文件中读取的data相同的代码时,我就不能将线条图与盒子图一起显示。

代码语言:javascript
运行
复制
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

df=pd.read_csv('test.csv')
fig,ax=plt.subplots()
m=df.groupby('Start Date')['Score'].median()
sns.boxplot(y='Score',x='Start Date',data=df,ax=ax)
sns.lineplot(y=m.values,x=m.index,ax=ax)
plt.show()

给出了这个

无论lineplot命令是在boxplot之前还是之后,都不重要,只会显示boxplot。只有在boxplot line被注释掉的情况下,我才能看到这条线。

我不明白我从csv读到的this data有什么不同,我不能覆盖线条和方框。

附言:我知道一个简单的解决方法是用matplotlib line命令替换seaborn lineplot行

代码语言:javascript
运行
复制
ax.plot(m.values,'r-o',linewidth=4)

它给出了想要的结果:

我只是好奇为什么seaborn lineplot会有这样的表现。

EN

回答 1

Stack Overflow用户

发布于 2020-07-20 22:28:52

我遇到了一个类似的问题,我通过将我的datetime列转换为string来“解决它”。

代码语言:javascript
运行
复制
df_median.date = df_median.date.astype(str)
df_aux.date = df_aux.date.astype(str)

sns.set()


ax = sns.stripplot('date',
                  'value',
                  data=df_aux)

ax = sns.lineplot('date',
                  'value',
                  data=df_median,
                  ax=ax)
plt.xlabel("month")
plt.ylabel("values")
labels = ax.axes.get_xticklabels()
ax.axes.set_xticklabels(labels, rotation=45)

plt.show()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57010792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档