[英]How do I assign different dots different colors in a scatter plot made with MatPlotLib?
使用MatPlotLib和Python,我正在制作笔记本电脑的散点图,其中x轴为成本,y轴为评级。 数据现在存储在制表符分隔文件中。
此链接描述了MatPlotLib散点图。 http://matplotlib.sourceforge.net/examples/api/unicode_minus.html
每台笔记本电脑的品牌都是Lenova,HP或戴尔。 我想为代表每个品牌的笔记本电脑的点分配不同的颜色。 例如,戴尔笔记本电脑标有蓝点,而Lenova笔记本电脑标有红点。
我怎样才能做到这一点?
更好的例子是散点图示例 。
在您的情况下,您需要一些'r'
, 'g'
或'b'
之一的字符串数组来代替close
数组。 因此,如果您可以阅读一系列品牌,则可以将其转换为这些字符的数组。 (我想你不想要相当于volume
数组,这会使圆圈的大小不同。)
您可以将您的brand
阵列转换为类似的颜色
brandcolors = [brand[i].replace('HP','g').replace('Lenovo','r').replace('Dell','b') for i in range(len(brand))]
然后,绘图功能看起来像
scatter(cost, rating, c=brandcolors)
添加图例有点棘手。 matplotlib文档建议使用“代理艺术家”,在那里你创建一些东西,但不要把它放在情节上。 例如:
pr = Rectangle((0, 0), 1, 1, fc='r')
pg = Rectangle((0, 0), 1, 1, fc='g')
pb = Rectangle((0, 0), 1, 1, fc='b')
legend([pr, pg, pb], ['Lenovo', 'HP', 'Dell'])
这有点难看,因为无论点的形状如何,它都是一个矩形。 另一个可能的黑客是实际绘制一个点,但要确保它保持在绘图区域之外。
plot([-100], 'ro', label='Lenovo')
...
ax.set_ylim(bottom=0)
legend()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.