繁体   English   中英

如何在使用MatPlotLib制作的散点图中为不同的点指定不同的颜色?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM