gpt4 book ai didi

python - 为不包含可映射的图形创建颜色条?

转载 作者:太空宇宙 更新时间:2023-11-03 15:18:09 25 4
gpt4 key购买 nike

我正在尝试添加 colorbar 到由 Python 库创建的图 matplotlib不包含“mappable ”。据我所知mapable是某种对象,例如轮廓,它具有离散值,colormap可以映射。尽管在我的例子中,我以编程方式生成对 plot 的调用mappable 中未包含的(行)目的。我没有看到 colorbar 的构造函数/方法不假设 mappable对象已存在于图中。

到目前为止,我的图表看起来像(我似乎无法获得好的图像,但我认为这有效;是的,这是一个可怕的配色方案)

enter image description here

这是一个 SSCCE 代码,用于生成图形,就像我解决问题的方式一样

import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap
from matplotlib.backends.backend_pdf import PdfPages

colorDict = {'red': [(0.0, 1.0, 1.0), (1.0, 0.0, 0.0)], 'green': [(0.0, 0.0, 0.0), (1.0, 1.0, 1.0)], 'blue': [(0.0, 0.0, 1.0), (1.0, 0.0, 0.0)]}
rgColorMap = LinearSegmentedColormap('RedGreen', colorDict, 10)
seedColors = cm.get_cmap(rgColorMap, 10)

graphPdf = PdfPages('Example.pdf')
fig = plt.figure(figsize=(8.27, 11.69), dpi=100)
for lineInd in range(1, 9):
plt.plot([x for x in range(1, 10)], [y*lineInd for y in range(1, 10)], color=seedColors(lineInd))

graphPdf.savefig(fig)
graphPdf.close()

在这种情况下,我如何创建 colorbar没有mappable正在绘制对象?

这是我将循环中绘制的数据分组为 mappable 的唯一解决方案然后在循环完成后进行绘图,或者有没有办法实例化 colorbar没有某种mappable

最佳答案

您当然可以创建自己的ScalarMappable,

sm = plt.cm.ScalarMappable(cmap=...)

然后需要有一个映射到颜色的数组(sm.set_array())。

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

colorDict = {'red': [(0.0, 1.0, 1.0), (1.0, 0.0, 0.0)], 'green': [(0.0, 0.0, 0.0), (1.0, 1.0, 1.0)], 'blue': [(0.0, 0.0, 1.0), (1.0, 0.0, 0.0)]}
rgColorMap = matplotlib.colors.LinearSegmentedColormap('RedGreen', colorDict, 10)
seedColors = plt.cm.get_cmap(rgColorMap, 10)

sm = plt.cm.ScalarMappable(cmap=seedColors)
sm.set_array(range(1, 9))
fig = plt.figure(figsize=(8.27, 11.69), dpi=100)
for lineInd in range(1, 9):
plt.plot([x for x in range(1, 10)], [y*lineInd for y in range(1, 10)], color=seedColors(lineInd))


fig.colorbar(sm, ticks=range(1,9), boundaries=np.arange(0.5,9,1))

plt.show()

enter image description here

关于python - 为不包含可映射的图形创建颜色条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43711355/

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