本文介绍了如何为scatter()添加图例?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这些选项不起作用...
These options do not work...
import numpy as np
import matplotlib.pyplot as plt
arr = np.random.random((5,3))
ax = plt.axes()
ax.scatter(arr[:,0],arr[:,1],c=['k','r','g','r','b'])
plt.legend(loc='upper left')
plt.draw()
ax = plt.axes()
h = ax.scatter(arr[:,0],arr[:,1],c=['k','r','g','r','b'])
plt.legend(h, loc='upper left')
plt.draw()
我可以代替使用plot并编写循环,
I can assemble use plot instead and write a loop,
colors = ['k','r','g','r','b']
ax = plt.axes()
h = []
for i,c in enumerate(colors):
h.append(ax.plot(arr[i,0],arr[i,1],c+'o'))
plt.legend(colors) ## plt.legend(h,colors) does not work
plt.draw()
如果我将h
传递给legend
时会说
warnings.warn("Legend does not support %s\nUse proxy artist instead.\n\nhttp://matplotlib.sourceforge.net/users/legend_guide.html#using-proxy-artist\n" % (str(orig_handle),))
但是如何在不编写循环的情况下使它与散点图一起使用?
But how can I get this to work with scatter without writing a loop?
推荐答案
似乎您正在尝试使用实际散点图填充图例,或者至少参考散点图中的情况.要创建图例,您需要将其绘制为单独的实体-这意味着需要重新创建散点图的形状和颜色,例如作为子图.这是一种较为手动的方法,但应该可以:
It seems like you are trying to populate the legend with the actual scatter plot, or at least reference what is going on in the scatter plot. To create a legend, you need to draw it as a separate entity - meaning that the scatter point shapes and colors need to be recreated, for example as a subplot. This is a slightly more manual approach but should work:
colors = ['k','r','g','r','b']
ax = plt.axes()
ax.scatter(arr[:,0],arr[:,1],c=['k','r','g','r','b'])
line1 = plt.Line2D(range(10), range(10), marker='o', color=colors[0])
line2 = plt.Line2D(range(10), range(10), marker='o',color=colors[1])
line3 = plt.Line2D(range(10), range(10), marker='o',color=colors[2])
line4 = plt.Line2D(range(10), range(10), marker='o',color=colors[3])
line5 = plt.Line2D(range(10), range(10), marker='o',color=colors[4])
plt.legend((line1,line2,line3, line4, line5),('color1','color2', 'color3', 'color4', 'color5'),numpoints=1, loc=1)
plt.show()
这篇关于如何为scatter()添加图例?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!