我想在 matplotlib 中水平繪制一維陣列。它需要繪制為條形圖,但與普通條形圖不同,它的顏色會根據值的大小而變化,類似于熱圖。您可以將其視為只有一行的熱圖(水平)。
模擬資料如下。它包含正值和負值。我希望值為0時顏色為白色,然后正數表示為紅色,負數表示為藍色。值越大,顏色越深。
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(9)
simu_data = np.random.randint(-100000, 100000, size = 200).cumsum()
uj5u.com熱心網友回復:

Matplotlib 有一個專門的規范來處理您的問題,matplotlib.colors.TwoSlopeNorm.
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
np.random.seed()
diverging_cmap = np.random.choice([
'PiYG', 'PRGn', 'BrBG', 'PuOr', 'RdGy', 'RdBu',
'RdYlBu', 'RdYlGn', 'Spectral', 'coolwarm', 'bwr', 'seismic'
])
np.random.seed(9)
simu_data = np.random.randint(-100000, 100000, size = 201).cumsum()
plt.imshow(np.vstack([simu_data[None,:] for _ in range(20)]),
norm=mpl.colors.TwoSlopeNorm(vcenter=0), cmap=diverging_cmap)
plt.yticks([])
plt.colorbar()
plt.title(diverging_cmap)
plt.show()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/529728.html
