3 回答

TA貢獻1784條經驗 獲得超2個贊
要獲得正確的顏色條,請使用以下代碼:
colormap = plt.cm.get_cmap('plasma') # 'plasma' or 'viridis'
colors = colormap(scaled_z)
sc = plt.scatter(x, y, c=colors)
sm = plt.cm.ScalarMappable(cmap=colormap)
sm.set_clim(vmin=0, vmax=100)
plt.colorbar(sm)
plt.xlabel("Actual")
plt.ylabel("Predicted")
plt.show()
對于我隨機生成的數據,我得到了以下圖:
現在替換'plasma'
并'viridis'
檢查其他變體。

TA貢獻1921條經驗 獲得超9個贊
您不應該縮放數據,除非您希望顏色條不正確。一旦您從分散調用中獲得了 PathCollection,您就可以在其上調用set_cmap和set_clim,并且顏色欄應該跟蹤。(您還可以顯式地將顏色條與 PathCollection 關聯以避免歧義)
import matplotlib.pyplot as plt
import numpy as np
x = np.random.randn(100)
y = np.random.randn(100)
z = np.random.randn(100)
sc=plt.scatter(x, y, c=z, cmap='viridis')
plt.clim(0, 100)
plt.colorbar(sc)
plt.xlabel("Actual")
plt.ylabel("Predicted")
sc.set_cmap('plasma')
sc.set_clim(-1, 1)
plt.show()

TA貢獻1810條經驗 獲得超5個贊
你的代碼給我返回一個錯誤TypeError: You must first set_array for mappable...
以下是對我有用的最簡單的語法:
import matplotlib.pyplot as plt
import numpy as np
a = np.random.random(100)
b = np.random.random(100)
scaled_z = (a + b)/a
plt.figure()
plt.scatter(a, b, c = scaled_z, cmap = 'plasma') ## you can directly change the colormap here
plt.colorbar()
plt.tight_layout()
plt.show()
添加回答
舉報