使用colormap绘制数据,在我的matplotlib绘图旁边创建一个颜色条

时间:2017-02-09 07:27:46

标签: python-2.7 matplotlib colorbar colormap

我在使用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

我希望你能在这里帮助我。如果我还可以创建一个“反转”颜色条,那将是很棒的。因此颜色是反方向,或者是条形旁边的值。

1 个答案:

答案 0 :(得分:0)

在脚本中的任何位置,您都可以通过fig = plt.gcf()获取数字,通过ax=plt.gca()获取轴。因此,添加轴可以通过plt.gcf().add_axes(...)完成 在绘制任何内容之前放置fig=plt.figure()也没有错。

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

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

<强>色彩映射表: 每个标准色彩映射都有一个反转版本,其名称末尾有_r,例如:您可以使用viridis_r代替viridis