我是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 回答
![?](http://img1.sycdn.imooc.com/5333a1a90001c8d802000200-100-100.jpg)
慕的地10843
TA贡献1785条经验 获得超8个赞
通过首先定义图表维度,使可视化变得更加容易。在你的情况下,他们将是:
X :
periodDate
y:数值
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)
![?](http://img1.sycdn.imooc.com/545863cd0001b72a02200220-100-100.jpg)
狐的传说
TA贡献1804条经验 获得超3个赞
然而,有点晚了,如果pandas可以选择使用绘图,无需任何预处理:
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()
添加回答
举报
0/150
提交
取消