簡體   English   中英

在 matplotlib 圖中設置數據數組的散點透明度

[英]Setting scatter points transparency from data array in matplotlib plot

我正在用 matplotlib 繪制數據,我從兩個 numpy 數組中獲得了一個散點圖:

ax1.scatter(p_100,tgw_e100,color='m',s=10,label="time 0")

我想添加有關每個點的偏心率的信息。 為此,我有第三個長度相同的數組p_100tgw_e100ecc_100其項目范圍從 0 到 1。

所以我想使用來自ecc_100數據設置我的點的透明度,創建某種陰影比例。

我試過這個:

ax1.scatter(p_100,tgw_e100,color='m',alpha = ecc_100,s=10,label="time 0")

但我收到了這個錯誤:

ValueError: setting an array element with a sequence.

根據文檔alpha 只能是一個標量值。

因此,除了一個接一個地循環你的所有觀點之外,我看不到任何其他方式。

for x, y, a in zip(p_100, tgw_e100, ecc_100):
    ax1.scatter(x, y, color='m',alpha = a, s=10)

我認為標簽會很奇怪,所以你可能需要手工創建圖例。 我從我的解決方案中省略了這一點。

我想一個使alpha關鍵字參數表現得像cs的補丁會受到歡迎。

2015 年 5 月 6 日更新根據此問題,不會發生更改alpha以接受數組的情況。 錯誤報告建議通過 RGBA 數組設置顏色以控制 alpha 值。 這聽起來比我建議單獨繪制每個點更好。

c = np.asarray([(0, 0, 1, a) for a in alpha])
scatter(x, y, color=c, edgecolors=c)

另一種選擇是使用cmap參數提供顏色圖,使用c參數提供您想要顏色的深/淺映射。 看看這個問題: matplotlib colorbar for scatter

這是所有 matplotlib 顏色圖: http : PuRd我建議使用像PuRd這樣的順序顏色PuRd 如果顏色在相反方向變暗,您可以通過將_r附加到名稱來使用“反轉”顏色圖,例如PuRd_r

試試這個:

ax1.scatter(p_100, tgw_e100, c=ecc_100, cmap='PuRd', s=10, label='time 0')

希望有幫助!

這是使用透明度的三列散點圖。

x = sample_df['feature_1']
y = sample_df['feature_2']
#e = {'label_x': 'b', 'label_y': 'r'}
# label_x will be in red, label_y will be in blue
e = {'label_x': np.asarray((1, 0, 0, .1)), 'label_y': np.asarray((0, 0, 1, .1))} 
colr = sample_df['label_bc'].map(e)
plt.scatter(x, y, c=colr);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM