为了账号安全,请及时绑定邮箱和手机立即绑定

在seaborn图表中绘制多个项目

在seaborn图表中绘制多个项目

POPMUISE 2023-10-26 15:46:41
我是seaborn的新手,但我不知道我做错了什么。我在 DF 中有以下数据。    value   predicted   periodDate51056   6482000.0   14845572.0  201951057   5347000.0   15999591.0  201851058   4912000.0   12067500.0  201751059   8490000.0   16376355.0  201651060   6998000.0   13886005.0  201551061   7868000.0   23012226.0  201451062   8068000.0   14297749.0  201351063   8427000.0   18183418.0  201251064   10229000.0  18053788.0  201151065   10504000.0  19222080.0  2010我想要一个图,其中每个值绘制在另一个值旁边,按年份(periodDate 列)排序。我尝试使用这个命令:sn.factorplot(x="value", y="predicted", data=dataToPlot)但我得到这个输出:而我希望有这样的事情:任何人都可以帮助或建议我可以使用的资源来了解我使用seaborn命令做错了什么吗?
查看完整描述

2 回答

?
慕的地10843

TA贡献1785条经验 获得超8个赞

通过首先定义图表维度,使可视化变得更加容易。在你的情况下,他们将是:

  • X :periodDate

  • y:数值

  • z(或其他东西):valuepredicted

实际上,值/预测列位于您的数据框中,但不是有用的方式。这将我们带到下一点。

为了在我们列举的三个维度(x、y、z)中安排您的数据框思维。我们将使用 pandas melt(unpivot) 函数。

df_aranged = df.melt(id_vars=['year'], var_name='z', value_name='z_value') # df is your dataframe

现在你的数据框看起来像:

https://img1.sycdn.imooc.com/653a199300012a2f02660564.jpg

现在您可以绘制您需要的内容。

sns.lineplot(x="periodDate", y="z_value", hue="z", data=df_aranged)

https://img1.sycdn.imooc.com/653a19aa00012df110050492.jpg

查看完整回答
反对 回复 2023-10-26
?
狐的传说

TA贡献1804条经验 获得超3个赞

然而,有点晚了,如果pandas可以选择使用绘图,无需任何预处理:


import matplotlib.pyplot as plt


#lineplot

df.plot(x='periodDate')

plt.tight_layout()

plt.show()

https://img1.sycdn.imooc.com/653a19c40001048d06510490.jpg

您还可以使用seaborn绘图pandas:


import seaborn as sns

import matplotlib.pyplot as plt

sns.set_style('darkgrid')


#lineplot

df.plot(x='periodDate')

plt.tight_layout()

plt.show()

https://img1.sycdn.imooc.com/653a19d00001211406490484.jpg

或者一个barplot:


import matplotlib.pyplot as plt


#barplot

df.sort_values('periodDate').plot.bar(x='periodDate')

plt.tight_layout()

plt.show()

https://img1.sycdn.imooc.com/653a19db0001e8ef06520487.jpg

查看完整回答
反对 回复 2023-10-26
  • 2 回答
  • 0 关注
  • 98 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信