我想在maplotlib图的图例中插入几个小图形(矢量图形,但必要时可以制作光栅).图例中的每个项目都会有一个图形.
我知道我可以使用类似注释框的东西手动绘制整个图例,但这看起来很乏味,图中的任何小变化都需要手工修复.
有没有办法在呼叫中pyplot.plot或呼叫后期的标签中包含图形pyplot.legend?
我正在绘制分类数据和值计数 sns.countplot()
我正在尝试将 x 值的图例添加到图中,如下所示:句柄是 x 值的集合,标签是 x 值的描述。
ax = sns.countplot(x = df.GARAGE_DOM)
handles, labels = ax.get_legend_handles_labels()
handles = ["VP", "BC", "GC", "GP", "JC", "PO"]
labels = ["Voie Publique", "box", "Garage couvert", "garage particulier clos", "Jardin clos", "parking ouvert"]
by_label = OrderedDict(zip(handles,labels))
ax.legend(by_label.keys(), by_label.values())
Run Code Online (Sandbox Code Playgroud)
但是,我收到警告说
用户警告:
Legend 不支持“VP”实例。可以使用代理艺术家来代替。请参阅:http : //matplotlib.org/users/legend_guide.html#using-proxy-artist
我已经阅读了代理艺术家的文档,但在我的案例中没有找到示例。
谢谢你的帮助。
我试图在python图中创建一个图例,其中艺术家是一个字符串(单个字母),然后标记.例如,我想要一个下图的图例:
import numpy as np
import matplotlib.pyplot as plt
import string
N = 7
x = np.random.rand(N)
y = np.random.rand(N)
colors = np.random.rand(N)
area = np.pi * (15 * np.random.rand(N))**2
plt.scatter(x, y, s=area, c=colors, alpha=0.5)
for i,j in enumerate(zip(x,y)):
plt.annotate(list(string.ascii_uppercase)[i],xy=j)
plt.show()
Run Code Online (Sandbox Code Playgroud)
传说的地方如下:
A - 型号名称A.
B - 型号名称B.
C - 型号名称C.
D - 型号名称D.
etc.etc.
我无法解决的问题是将'A','B',......作为传奇文本的艺术家.我可以看到你将如何使用线或补丁,或类似的东西.但总的来说有一种方法可以使用字符串作为艺术家而不是一条线?