我试图使用seaborn绘制,但是标签没有出现,即使它是在axis对象中指定的。
如何在情节上显示标签?
这是我的代码:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
dx = pd.DataFrame({'c0':range(5), 'c1':range(5,10)})
dx.index = list('abcde')
ax = sns.pointplot(x=dx.index,
y="c0",
data=dx, color="r",
scale=0.5, dodge=True,
capsize=.2, label="child")
ax = sns.pointplot(x=dx.index,
y="c1",
data=dx, color="g",
scale=0.5, dodge=True,
capsize=.2, label="teen")
ax.legend()
plt.show()
图例显示错误:
No handles with labels found to put in legend.
如果您使用的是
seaborn
,则应尝试使用整洁(或“长”)数据,而不是“宽”数据。有关Organizing Datasets请参阅此链接现在可以绘制一次而不是两次
在您的例子中,ylabel已经设置为
c0
,因此不需要图例。如果你坚持传奇,我建议你不要使用社交网站。相反,尝试使用pandas的matplotlib接口
或者更灵活地直接使用matplotlib的API
sns.pointplot()
并不只是为了在同一个图中绘制多个数据帧属性,而是为了可视化它们之间的关系,在这种情况下,它将生成自己的标签。您可以通过向ax.legend()
传递labels
参数来覆盖它们(请参见Add Legend to Seaborn point plot),但是一旦您对绘图进行了更改,可能会出现一些混乱。为了利用海本美学创作你的情节,我会这样做:
结果:
相关问题 更多 >
编程相关推荐