我正在 matplotlib 中繪制影片輪廓圖,顏色條在每幀發生變化。我想讓顏色條以零為中心(我使用的是發散的顏色圖),為此我使用了奇數個級別。問題是,當我這樣做時,即使顏色圖 (cm.seismic) 的中心顏色是白色,該顏色也不會出現在顏色圖中。我希望能夠用白色替換最小值(淺紅色和淺藍色)的顏色,這樣我就有兩個(兩個最小值)而不是一個顏色為白色(零)的中央級別。

uj5u.com熱心網友回復:
您可以提供顏色串列,而不是提供顏色圖。該串列可以從給定的顏色圖計算,中間顏色可以明確設定為白色。
下面是一個例子:
import matplotlib.pyplot as plt
import numpy as np
x = y = np.linspace(-3.0, 3.01, 100)
X, Y = np.meshgrid(x, y)
Z1 = np.exp(-X ** 2 - Y ** 2)
Z2 = np.exp(-(X - 1) ** 2 - (Y - 1) ** 2)
Z = (Z1 - Z2) * 2
num_levels = 9
colors = plt.cm.seismic(np.linspace(0, 1, num_levels 1))
colors[num_levels // 2] = [1, 1, 1, 1] # set to white
colors[num_levels // 2 1] = [1, 1, 1, 1]
fig, ax1 = plt.subplots(figsize=(10, 5))
CS = ax1.contourf(X, Y, Z, num_levels, colors=colors, origin='lower')
cbar = fig.colorbar(CS, ax=ax1)
plt.show()

轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/354646.html
標籤:matplotlib 颜色条 颜色图
