我有一個水平條形圖,我應該根據水平值將條形慢慢從黃色變為紅色。所以 X 值越大,條形圖越紅
(我想展示劇情,但由于我的聲譽低,我無法上傳它的圖片)
import matplotlib.pyplot as plt
x = [3,3,4]
y = [1,2,5]
plt.barh(x,y)
plt.show()
uj5u.com熱心網友回復:
我會做一些類似的手工制作:
colorsValue = []
for value in x:
if value < LOW_TRESHOLD:
colorsValue.append('yellow')
elif value >= HIGH_TRESHOLD:
colorsValue.append('red')
else:
colorsValue.append('orange')
plt.barh(x, y, color = colorsValue)
whereLOW_TRESHOLD和HIGH_TRESHOLD是由你決定的值,以及顏色。matplotlib 顏色串列在這里。
這只是向您展示語法的一個最小示例。Kroshtan 的解決方案也很好,比我自制的解決方案更通用,所以我建議你使用他的解決方案。
uj5u.com熱心網友回復:
您可以在color引數中傳遞一個陣列。可以使用 matplotlib 檔案中的 cmap 計算此陣列的值。
colors = [(1, 1, 0), (1, 0, 0)]
my_cmap = LinearSegmentedColormap.from_list(
'color_map', colors, N=100)
然后將顏色縮放到您擁有的值:
rescale = lambda y: (y - np.min(y)) / (np.max(y) - np.min(y))
plt.barh(x,y,color=my_cmap(rescale(y)))
plt.show()
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/406729.html
標籤:
