将颜色条添加到3变量颜色图

时间:2015-06-10 13:30:50

标签: python matplotlib

从另一篇文章中我得到了如何创建图表,但我正在努力添加比例尺。 从颜色打印项目会产生[ 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()

1 个答案:

答案 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()

enter image description here

如果你愿意,你也可以使用略有不同的风格:

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()

enter image description here