在海图中绘制多个项目

时间:2020-10-09 23:10:41

标签: python pandas 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)

但是我得到以下输出: enter image description here

我希望有这样的东西: enter image description here

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

2 个答案:

答案 0 :(得分:1)

首先定义图表尺寸,即可轻松实现可视化。就您而言,它们将是:

  • x:periodDate
  • y:数值
  • z(或其他):valuepredicted

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

为了按照您列举的三个维度(x,y,z)安排您的数据框架思维。我们将使用pandas melt(取消透视)功能。

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

现在您的数据框如下所示:

Aranged df

现在您可以绘制所需的内容。我使用了seaborn lineplot,但是您可以使用最适合您的图表。为了使您的情节更加新颖,请查看此answer。另外,如果您想进一步了解seaborn地块,请检查此reference

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

Final visualization

希望对您有帮助。

答案 1 :(得分:0)

不过,如果选择使用pandas进行绘图,则@Hans建议的解决方案无需任何预处理就可以很快实现:

import matplotlib.pyplot as plt

#lineplot
df.plot(x='periodDate')
plt.tight_layout()
plt.show()

enter image description here

您还可以将seabornpandas一起使用:

import seaborn as sns
import matplotlib.pyplot as plt
sns.set_style('darkgrid')

#lineplot
df.plot(x='periodDate')
plt.tight_layout()
plt.show()

enter image description here

barplot

import matplotlib.pyplot as plt

#barplot
df.sort_values('periodDate').plot.bar(x='periodDate')
plt.tight_layout()
plt.show()

enter image description here