首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为scatter()添加图例?

如何为scatter()添加图例?
EN

Stack Overflow用户
提问于 2011-11-05 10:04:36
回答 1查看 3.3K关注 0票数 0

这些选项不起作用...

代码语言:javascript
复制
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进行汇编,然后编写一个循环,

代码语言:javascript
复制
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,它会说

代码语言:javascript
复制
  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),))

但是,我如何才能在不编写循环的情况下使用scatter呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-05 12:38:13

您似乎正在尝试使用实际散点图填充图例,或者至少引用散点图中正在发生的事情。要创建图例,您需要将其绘制为单独的实体-这意味着需要重新创建散点形状和颜色,例如作为子图。这是一种稍微手动的方法,但应该是可行的:

代码语言:javascript
复制
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()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8017654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档