我刚接触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)
任何人都可以帮助或建议我可以用来理解我的seaborn命令在做什么的资源吗?
答案 0 :(得分:1)
首先定义图表尺寸,即可轻松实现可视化。就您而言,它们将是:
periodDate
value
或predicted
实际上,值/预测列在数据框中,但不是有用的方式。这将我们带到了下一步。
为了按照您列举的三个维度(x,y,z)安排您的数据框架思维。我们将使用pandas melt
(取消透视)功能。
df_aranged = df.melt(id_vars=['year'], var_name='z', value_name='z_value') # df is your dataframe
现在您的数据框如下所示:
现在您可以绘制所需的内容。我使用了seaborn
lineplot,但是您可以使用最适合您的图表。为了使您的情节更加新颖,请查看此answer。另外,如果您想进一步了解seaborn
地块,请检查此reference。
sns.lineplot(x="periodDate", y="z_value", hue="z", data=df_aranged)
希望对您有帮助。
答案 1 :(得分:0)
不过,如果选择使用pandas
进行绘图,则@Hans建议的解决方案无需任何预处理就可以很快实现:
import matplotlib.pyplot as plt
#lineplot
df.plot(x='periodDate')
plt.tight_layout()
plt.show()
您还可以将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()
或barplot
:
import matplotlib.pyplot as plt
#barplot
df.sort_values('periodDate').plot.bar(x='periodDate')
plt.tight_layout()
plt.show()