![](/img/trans.png)
[英]matplotlib - randomly pick N points from 2D array, and plot spatial scatter plot
[英]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_100
和tgw_e100
, ecc_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
關鍵字參數表現得像c
和s
的補丁會受到歡迎。
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.