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