簡體   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