gpt4 book ai didi

python - 使用 Colormaps 在 matplotlib 中设置线条的颜色

转载 作者:IT老高 更新时间:2023-10-28 21:42:19 29 4
gpt4 key购买 nike

如何使用颜色图(比如 jet)使用运行时提供的标量值设置 matplotlib 中线条的颜色?我在这里尝试了几种不同的方法,我想我很难过。 values[] 是一个存储的标量数组。曲线是一组一维数组,标签是文本字符串数组。每个数组都有相同的长度。

fig = plt.figure()
ax = fig.add_subplot(111)
jet = colors.Colormap('jet')
cNorm = colors.Normalize(vmin=0, vmax=values[-1])
scalarMap = cmx.ScalarMappable(norm=cNorm, cmap=jet)
lines = []
for idx in range(len(curves)):
line = curves[idx]
colorVal = scalarMap.to_rgba(values[idx])
retLine, = ax.plot(line, color=colorVal)
#retLine.set_color()
lines.append(retLine)
ax.legend(lines, labels, loc='upper right')
ax.grid()
plt.show()

最佳答案

您收到的错误是由于您如何定义 jet。您正在创建名为“jet”的基类 Colormap,但这与获取“jet”颜色图的默认定义非常不同。永远不应该直接创建这个基类,而应该只实例化子类。

您在示例中发现的是 Matplotlib 中的错误行为。运行此代码时应该会生成更清晰的错误消息。

这是您示例的更新版本:

import matplotlib.pyplot as plt
import matplotlib.colors as colors
import matplotlib.cm as cmx
import numpy as np

# define some random data that emulates your indeded code:
NCURVES = 10
np.random.seed(101)
curves = [np.random.random(20) for i in range(NCURVES)]
values = range(NCURVES)

fig = plt.figure()
ax = fig.add_subplot(111)
# replace the next line
#jet = colors.Colormap('jet')
# with
jet = cm = plt.get_cmap('jet')
cNorm = colors.Normalize(vmin=0, vmax=values[-1])
scalarMap = cmx.ScalarMappable(norm=cNorm, cmap=jet)
print scalarMap.get_clim()

lines = []
for idx in range(len(curves)):
line = curves[idx]
colorVal = scalarMap.to_rgba(values[idx])
colorText = (
'color: (%4.2f,%4.2f,%4.2f)'%(colorVal[0],colorVal[1],colorVal[2])
)
retLine, = ax.plot(line,
color=colorVal,
label=colorText)
lines.append(retLine)
#added this to get the legend to work
handles,labels = ax.get_legend_handles_labels()
ax.legend(handles, labels, loc='upper right')
ax.grid()
plt.show()

导致:

enter image description here

使用 ScalarMappable 是对我的相关答案中提出的方法的改进: creating over 20 unique legend colors using matplotlib

关于python - 使用 Colormaps 在 matplotlib 中设置线条的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8931268/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com