更好的例子是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