使用MatPlotLib和Python,我正在制作笔记本电脑的散点图,其中x轴为成本,y轴为评级。现在,数据存储在以制表符分隔的文件中。
此链接描述了MatPlotLib散点图。 http://matplotlib.sourceforge.net/examples/api/unicode_minus.html
每台笔记本电脑的品牌都是Lenova,HP或戴尔。我想为代表每个品牌的笔记本电脑的点分配不同的颜色。例如,戴尔笔记本电脑的标记为蓝点,而Lenova笔记本电脑则标有红点。
我该怎么做?
答案 0 :(得分:4)
更好的例子是scatter plot example。
在您的情况下,代替close
数组,您需要一些'r'
,'g'
或'b'
之一的字符串数组。因此,如果您可以阅读一系列品牌,则可以将其转换为这些字符的数组。 (我想你不希望等同于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 docs建议使用“代理艺术家”,在那里创建一些东西,但不要把它放在情节上。例如:
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()