我正在制作一些交互式图,我想添加一个颜色条图例。我不希望颜色条在自己的轴上,所以我想将它添加到现有的轴上。我在做这件事时遇到了困难,因为我发现的大多数示例代码都为颜色条创建了一个新的轴。
我尝试了以下代码使用matplotlib.colorbar.ColorbarBase
,它添加了一个colorbar到现有的轴,但它给了我奇怪的结果,我不能弄清楚如何指定colorbar的属性(例如,在轴上的位置,它是什么大小)
import matplotlib
import matplotlib.pyplot as plt
from matplotlib.cm import coolwarm
import numpy as np
x = np.random.uniform(1, 10, 10)
y = np.random.uniform(1, 10, 10)
v = np.random.uniform(1, 10, 10)
fig, ax = plt.subplots()
s = ax.scatter(x, y, c=v, cmap=coolwarm)
matplotlib.colorbar.ColorbarBase(ax=ax, cmap=coolwarm, values=sorted(v),
orientation="horizontal")
使用fig.colorbar
而不是matplotlib.colorbar.ColorbarBase
仍然不能给予我想要的效果,而且我仍然不知道如何调整颜色条的属性。
fig.colorbar(s, ax=ax, cax=ax)
假设我想让颜色条在左上角,延伸到图的顶部,我该怎么做呢?
我最好为此编写一个自定义函数,也许使用LineCollection
?
3条答案
按热度按时间bn31dyow1#
这种技术通常用于图形中的多轴。在这种情况下,通常需要有一个颜色条**,其大小与imshow的结果相对应。**这可以通过axes grid工具包轻松实现:
3xiyfsfu2#
颜色条必须有自己的轴。但是,您可以创建一个与前一个轴重叠的轴。然后使用
cax
kwarg告诉fig.colorbar
使用新轴。举例来说:
kupeojn63#
无法将此作为注解添加,但如果有人对使用接受的子图答案感兴趣,则应在特定轴对象上形成分隔符(而不是在从plt.subplots返回的numpy.ndarray上)