当前位置: 首页 > 面试题库 >

如何从Matplotlib中的图检索颜色条实例

钱朝明
2023-03-14
问题内容

所有。我想在更改图像数据时更新图形的颜色栏。所以像:

img = misc.lena()
fig = plt.figure()
ax = plt.imshow(im)
plt.colorbar(ax)
newimg = img+10*np.randn(512,512)

def update_colorbar(fig,ax,newimg):
    cbar = fig.axes[1]
    ax.set_data(newimg)
    cbar.update_normal(ax)
    plt.draw()

但似乎从fig.axes()返回的结果没有我期望的颜色条实例。我可能可以只将colorbar实例作为参数传递给update函数,但是我认为仅传递一个fig参数就足够了。谁能解释一下如何从图中检索颜色条?还是为什么’fig.axes()’不返回AxesImage或Colobar实例,而仅返回Axes或AxesSubplot?我想我只需要对Axes
/ Figure的东西有更多的了解,谢谢!


问题答案:

首先,我认为您在坐标轴(基本上是绘图),图形,标量可映射对象(在这种情况下为图像)和色条实例之间有点困惑。

figure是,该地块是在窗口中。这是顶级容器。

每个数字通常具有一个或多个axes。这些是地块/子图。

彩条也在图中。添加颜色条会为要显示的颜色条创建一个新轴(除非您另行指定)。(通常无法在与图像相同的轴上显示它,因为颜色条需要有自己的x和y限制,等等。)

您之所以有些困惑,是因为您混用了状态机接口和OO接口。这样做很好,但是您需要了解OO接口。

fig.axes[1]不是colorbar实例。它是绘制颜色条的轴。(也是,图中fig.axes[1]的第二条轴。它恰好是具有一个子图和一个颜色条的图形中的颜色条所在的轴,但通常不会案子。)

如果要更新颜色条,则需要保留colorbar返回的颜色条实例。

以下是您通常如何处理事情的示例:

import matplotlib.pyplot as plt
import numpy as np

data = np.random.random((10,10)) # Generate some random data to plot

fig, ax = plt.subplots() # Create a figure with a single axes.
im = ax.imshow(data)     # Display the image data
cbar = fig.colorbar(im)  # Add a colorbar to the figure based on the image

如果你要使用update_normal更新彩条,预计一ScalarMappable(通过创建例如图像imshow,该集合scatter创建时,ContourSetcontour创建等)以进行传递。(还有其他的方法来做到这一点,以及。通常,您只想更新限制,而不是整个限制。)对于上述代码,您可以致电cbar.update_normal(im)

但是,您尚未创建新的AxesImage,只是更改了它的数据。因此,您可能只想做:

cbar.set_clim(newimg.min(), newimg.max())


 类似资料:
  • 问题内容: 这应该很容易,但是我很难过。基本上,我在matplotlib中有一个子图,每次调用一个函数时,我都会绘制一个六边形图,但是每次调用该函数时,都会得到一个新的颜色条,所以我真正想做的就是更新颜色条。不幸的是,这似乎不起作用,因为通过subplot.hexbin重新创建了附加了颜色条的对象。 我现在在这个烦人的地方,尝试完全删除颜色条轴,然后重新创建它。不幸的是,当我删除颜色条轴时,子图轴

  • 问题内容: 我想知道如何简单地反转给定颜色图的颜色顺序,以便将其与plot_surface一起使用。 问题答案: 标准色图也都具有相反的版本。它们具有相同的名称,并附加在末尾。(此处的文档。)

  • 问题内容: 特别是在处理灰度图像时,将每个命令的色图设置为会很麻烦。如何设置matplotlib使用的默认颜色图来灰度或其他颜色图? 问题答案: 要仅为当前交互式会话或一个脚本更改默认颜色图,请使用 对于2.0之前的版本,您必须使用rcParams字典。在新版本中仍然有效。 要更改默认颜色图,请永久编辑matplotlibrc配置文件并添加该行。根据需要,将灰色值替换为任何其他有效的颜色图。配置文

  • 问题内容: 我花了太多时间研究如何在中使用两个颜色共享的单个颜色条来使两个子图共享相同的y轴。 发生的是,当我在中调用函数时,它将自动缩放绘图,以使颜色栏和绘图可以放入“子图”边界框内,从而导致两个并排的绘图有两个截然不同的情况大小。 为了解决这个问题,我尝试创建第三个子图,然后黑客入侵它,仅用一个色条就不渲染任何图。唯一的问题是,现在两个图的高度和宽度是不均匀的,我不知道如何使它看起来还不错。

  • 问题内容: 我想知道是否有一个函数调用可以给我matplotlib中可用的所有颜色图的名称? 过去通过(类似于此处)的某些东西是可能的: 但是在mpl 1.5中运行它不会返回新的颜色图,例如,等等。在新的参考页上,代码实际上对名称进行了硬编码(请参阅此处),但是我想知道是否仍然可以对上述名称进行类似的查询? 问题答案: 返回所有已注册颜色图的列表。从文档: Matplotlib提供了许多色图,可以

  • 本文向大家介绍Python的matplotlib绘图如何修改背景颜色的实现,包括了Python的matplotlib绘图如何修改背景颜色的实现的使用技巧和注意事项,需要的朋友参考一下 在主图中背景颜色不知道怎么改,plt.plot()中没有axisbg参数。 但是子图可以对plt.subplot的参数做修改,下面是对子图的背景颜色修改代码 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大