我在使用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
。
我希望你能在这里帮助我。如果我还可以创建一个“反转”颜色条,那将是很棒的。因此颜色是反方向,或者是条形旁边的值。
答案 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
。