更好的例子是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()
也许最好的办法就是拥有三组,并且调用'scatter()'三次。 [pandas](http://pandas.pydata.org/)使这一点变得简单。 – 2012-02-16 18:22:58