使用颜色图在我的 matplotlib 图 w/o 旁边创建一个颜色条来绘制数据

Creating a colorbar next to my matplotlib plot w/o using the colormap to plot the data

我在使用 matplotlib 为 Python 中的绘图创建颜色条时遇到问题。我正在使用颜色图,不是为我绘制的所有数据着色,而是根据我未绘制的值为绘图提取颜色。希望这是有道理的.. 所以我在一个 for 循环中,每次都根据某个参数用一种颜色创建一个图。像这样(数据是创建mwe的例子,我的数据比较复杂):

import matplotlib as mpl
from matplotlib import pyplot as plt
import numpy as np

xdata = np.array(range(10))
parameter = [0.5, 0.3, 0.78, 0.21, 0.45] #random parameter example

cmap = mpl.cm.get_cmap('jet')

for i in range(len(parameter)):
    clr = cmap(parameter(i))
    plt.plot(xdata,xdata**i,c=clr)

plt.show()

现在,我想要的是侧面的颜色条(或者实际上是两个,但我认为这是另一个问题),它显示喷射颜色图和相应的值。这些值需要缩放到新的最小值和最大值。

到目前为止我发现了以下内容,但我对它的理解还不足以将其应用到我自己的问题中:

Getting individual colors from a color map in matplotlib 其中告诉我如何提取颜色并展示了如何创建标准化颜色图

Colorbar only 这应该告诉我如何在不使用绘制数据的情况下添加颜色条,但我对它的了解还不够。我的问题是轴的创建。如果我想把颜色条放在我的情节旁边,我不明白这部分。在示例中,他们创建了一个带有句柄 fig 的图形,但在我的例子中,图形是在我执行 plt.imshow(image) 时创建的,因为这是我开始的,然后我在图像上绘制。我不能在这里使用 fig.add_axes

我希望你能帮我解决这个问题。如果我也可以创建一个 'reversed' 颜色条,那就太好了。所以要么颜色是反向的,要么是条形旁边的值。

在脚本中的任何一点,您都可以通过 fig = plt.gcf() 获得图形,通过 ax=plt.gca() 获得轴。因此,可以通过 plt.gcf().add_axes(...).
添加轴 在绘制任何东西之前放置 fig=plt.figure() 也没有错。

请注意,在创建新轴后,plt.gca() 将 return 新轴,因此最好在添加新轴之前创建对主轴的引用。
获取图形和坐标轴供以后参考的便捷方法是通过

创建图形
fig, ax = plt.subplots()

色图: 每个标准颜色图都有一个反转版本,其名称末尾有 _r,例如你可以使用 viridis_r 而不是 viridis.