2017-02-09 88 views
1

我在使用matplotlib在Python中为我的情节创建一个颜色条时遇到了问题。我正在使用一个色彩地图,而不是对所绘制的所有数据进行着色,而是根据我未绘制的值为绘图提取颜色。希望这是有道理的.. 因此,我在一个for循环,每次创建一个基于某个参数的颜色的情节。像这样(的数据是创建一个兆瓦的例子,我的数据是比较复杂):在我的matplotlib旁边创建一个颜色条,不使用颜色贴图来绘制数据

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 哪位告诉我如何提取颜色并展示了如何创建标准化colormap

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

我希望你能帮助我。如果我也可以创建一个“反转”的颜色条,那将是非常棒的。所以颜色是反方向的,或者是条的旁边的值。

+0

在脚本中的任何位置,您都可以通过'fig = plt.gcf()'和轴通过'ax = plt.gca()'获得图形。因此,添加轴可以通过'plt.gcf()。add_axes(...)'完成。在绘制任何东西之前放置'fig = plt.figure()'也没有任何问题。每个标准色彩映射都有一个反转版本,其名称末尾有'_r',例如你可以使用'viridis_r'而不是'viridis'。 – ImportanceOfBeingErnest

+0

谢谢,这听起来像我所需要的!很遗憾,直到明天才能尝试,如果能解决问题,会让你知道。我应该想到gcf和gca,因为我已经使用过很多次了... -.- –

+0

嘿,谢谢,这正是我需要的。我想我可以/应该知道,但我不能把它们放在一起,所以你真的帮助我在这里。如果你把它作为答案发布,我会投它的;-) –

回答

0

在脚本中的任何位置,您都可以通过fig = plt.gcf()和轴通过ax=plt.gca()获取图形。所以,添加一个轴可以通过plt.gcf().add_axes(...)完成。
在绘制任何东西之前放​​也没有错。

请注意,创建新轴之后,plt.gca()将返回新轴,所以在添加新轴之前创建对主轴的引用是一个好主意。
一个方便的方式获得的数字,供以后参考的轴是通过

fig, ax = plt.subplots() 

色彩映射表以创建图: 每个标准颜色表具有反转的版本,其在它的名字的端部具有_r ,例如您可以使用viridis_r而不是viridis

+0

完美,只是我需要感谢。答案接受,不能upvote它,但遗憾 –

相关问题