在seaborn图表中绘制多个项目

我是seaborn的新手,但我不知道我做错了什么。我在 DF 中有以下数据。


    value   predicted   periodDate

51056   6482000.0   14845572.0  2019

51057   5347000.0   15999591.0  2018

51058   4912000.0   12067500.0  2017

51059   8490000.0   16376355.0  2016

51060   6998000.0   13886005.0  2015

51061   7868000.0   23012226.0  2014

51062   8068000.0   14297749.0  2013

51063   8427000.0   18183418.0  2012

51064   10229000.0  18053788.0  2011

51065   10504000.0  19222080.0  2010

我想要一个图,其中每个值绘制在另一个值旁边,按年份(periodDate 列)排序。


我尝试使用这个命令:


sn.factorplot(x="value", y="predicted", data=dataToPlot)

但我得到这个输出:

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

而我希望有这样的事情:

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

任何人都可以帮助或建议我可以使用的资源来了解我使用seaborn命令做错了什么吗?



POPMUISE
浏览 99回答 2
2回答

慕的地10843

通过首先定义图表维度,使可视化变得更加容易。在你的情况下,他们将是:X :periodDatey:数值z(或其他东西):value或predicted实际上,值/预测列位于您的数据框中,但不是有用的方式。这将我们带到下一点。为了在我们列举的三个维度(x、y、z)中安排您的数据框思维。我们将使用 pandas melt(unpivot) 函数。df_aranged = df.melt(id_vars=['year'], var_name='z', value_name='z_value') # df is your dataframe现在你的数据框看起来像:现在您可以绘制您需要的内容。sns.lineplot(x="periodDate", y="z_value", hue="z", data=df_aranged)

狐的传说

然而,有点晚了,如果pandas可以选择使用绘图,无需任何预处理:import matplotlib.pyplot as plt#lineplotdf.plot(x='periodDate')plt.tight_layout()plt.show()您还可以使用seaborn绘图pandas:import seaborn as snsimport matplotlib.pyplot as pltsns.set_style('darkgrid')#lineplotdf.plot(x='periodDate')plt.tight_layout()plt.show()或者一个barplot:import matplotlib.pyplot as plt#barplotdf.sort_values('periodDate').plot.bar(x='periodDate')plt.tight_layout()plt.show()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python