【发布时间】:2021-01-07 17:50:56
【问题描述】:
我有一个代码,它为我提供了预测值与实际值作为浓度函数的散点图。数据是从 excel csv 电子表格中提取的。
这是代码:
import matplotlib.pyplot as plt
from numpy import loadtxt
dataset = loadtxt("ColorPlot.csv", delimiter=',')
x = dataset[:,0]
y = dataset[:,1]
z = dataset[:,2]
scaled_z = (z - z.min()) / z.ptp()
colors = plt.cm.viridis(scaled_z)
sc=plt.scatter(x, y, c=colors)
plt.clim(0, 100)
plt.colorbar()
plt.xlabel("Actual")
plt.ylabel("Predicted")
plt.show()
但是,如果我将颜色更改为类似
colors = plt.cm.plasma(scaled_z)
我得到了下面的图表,但颜色条保持不变。
我尝试了很多不同的方法,例如 cmap 或 edgecolors,但我不知道如何更改它。而且我想保持代码尽可能简单,因为我想根据我的 excel 电子表格数据轻松更改 z 的第三个变量。
是否还有一种方法可以让颜色条的比例从 excel 电子表格中获取比例,而无需我手动指定 0-100?
【问题讨论】:
-
标准方式是调用它为
plt.scatter(x, y, c=z, cmap='plasma')。并省略plt.clim()。以这种标准方式,颜色条将获得“等离子”颜色,并指示最低和最高 z 值。相反,如果您希望颜色条介于 0 和 100 之间,您可以使用scaled_z = 100*(z - z.min()) / z.ptp()和plt.scatter(x, y, c=scaled_z, cmap='plasma')。无论如何,最好省略plt.clim() -
天哪,这太完美了。从字面上直接解决了它。非常感谢。我删除了缩放的 z 项,将 cmap 放入分散项并删除了 plt.clim()。非常感谢@JohanCpan>
标签: python matplotlib scatter-plot colorbar