从另一篇文章中我得到了如何创建图表,但我正在努力添加比例尺。
从颜色打印项目会产生[ 0.53800422 0.67490159 0.99172189 1.]
,我猜测的是缩放颜色?
my_array = range(20)
my_array2 = my_array
z = np.array(my_array)
x = np.asarray(my_array)
scaled_x = (x - x.min()) / x.ptp()
scaled_z = (z - z.min()) / z.ptp()
colors = plt.cm.coolwarm(scaled_z)
graph = plt.scatter(my_array, my_array2, c = colors, cmap = colors )
cb = plt.colorbar(graph)
cb.set_label('mean value')
plt.show()
答案 0 :(得分:1)
我认为你对cmap
论证应该是什么有点混淆。它可以是色彩映射对象(例如plt.cm.coolwarm
),也可以是色彩映射的名称(例如"coolwarm"
)。
你试图传递明确的颜色。 ([ 0.53800422 0.67490159 0.99172189 1.]
是colormap为您的某个特定数据点生成的红色,绿色,蓝色和Alpha值。)
不是直接计算显式颜色,而是直接传入colormap对象。
例如,根据上面的示例代码,您可以将其重写为:
import numpy as np
import matplotlib.pyplot as plt
my_array = np.arange(20)
my_array2 = my_array
z = my_array
graph = plt.scatter(my_array, my_array2, c=z, cmap=plt.cm.coolwarm)
cb = plt.colorbar(graph)
cb.set_label('mean value')
plt.show()
如果你愿意,你也可以使用略有不同的风格:
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(20)
y, z = x, x
fig, ax = plt.subplots()
graph = ax.scatter(x, y, c=z, cmap='coolwarm', s=200)
cb = fig.colorbar(graph)
cb.set_label('Mean Value', rotation=-90, va='bottom')
ax.margins(0.1)
plt.show()