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()
添加回答
举报