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

python matplotlib blit到图的轴或侧面?

柳深
2023-03-14
问题内容

每当我尝试一次拟合过程时,我都会尝试刷新gui中的一些图。而且,这些图位于可调整大小的框架中,因此在调整大小后需要重新绘制轴和标签等。因此,我想知道是否有人知道如何使用plot.figure.canvas.copy_from_bbox和来更新图形的边blit。这似乎仅复制并变色绘图区域的背景(绘制线条的背景),而不复制到图形或图形的侧面(标记和刻度线所在的位置)。我一直在尝试通过反复试验和阅读mpl文档来更新图形,但是到目前为止,我的代码已经变得非常复杂,例如self.this_plot.canvas_of_plot..etc.etc.. .plot.figure.canvas.copy_from_bbox…这可能太令人费解了。我知道我的语言可能会稍差一些,但我一直在尝试通读matplotlb文档,并且Figure,canvas,graph,plot,figure.Figure等之间的差异开始让我回避。因此,我的首要问题是:

1-如何更新matplotlib图周围的刻度和标签。

其次,由于我想更好地了解这个问题的答案,

2-就图形用户界面,图形,画布等在GUI中所覆盖的区域而言,有什么区别?

非常感谢你的帮助。


问题答案:

刚开始时,所有这一切肯定会令人困惑!

首先,如果要链接刻度线等,那么使用blitting并没有多大意义。如果只有某些内容发生更改,则发条只是避免重绘所有内容的一种方法。如果一切都在变化,则使用blitting毫无意义。只需重新绘制剧情。

基本上,您只想要fig.canvas.draw()plt.draw()

无论如何,要回答第一个问题,在大多数情况下,您无需手动更新它们。如果您更改轴限制,它们将自动更新。您遇到了问题,因为您只是在绘制轴的内部,而不是重新绘制绘图。

关于第二个问题,《Matplotlib用户指南》的“美术师教程”是一个详尽详尽的概述。

简而言之,有两个单独的层。一种用于将事物分组到绘图时您会担心的部分(例如,图形,轴,轴,线等),另一种用于处理渲染和总体绘制(画布和渲染器)。

您可以在matplotlib图中看到的是一个Artist。(例如,文本,线条,轴,甚至是图形本身。)艺术家a)知道如何绘制自己,并且b)可以包含其他艺术家。

对于艺术家自己绘制,它使用渲染器(几乎永远不会直接接触到的特定于后端的模块)来绘制FigureCanvas又名“画布”(围绕基于矢量的页面或像素缓冲区的抽象)。要绘制图中的所有内容,请致电canvas.draw()

因为艺术家可以是其他艺术家的团体,所以事物之间存在层次结构。基本上是这样的(显然,这有所不同):

Figure
    Axes (0-many) (An axes is basically a plot)
        Axis (usually two) (x-axis and y-axis)
            ticks
            ticklabels
            axis label
         background patch
         title, if present
         anything you've plotted, e.g. Line2D's

无论如何,希望这使事情变得更加清晰。

如果您确实确实想使用blit来更新刻度线标签等,则需要获取并还原包括它们的整个区域。获取该区域有些棘手,因为直到绘制时间 后才
完全知道它(由于对乳胶的支持,在matplotlib中渲染文本比渲染其他对象要复杂得多)。您可以做到,如果确实需要它,我会很高兴地举一个例子,但是与仅绘制所有内容相比,它通常不会产生速度优势。(例外是,如果您仅在具有很多子图的图形中更新一个子图。)



 类似资料:
  • 问题内容: 是否有一种简单的方法可以将y轴标签放在图的右侧?我知道可以使用来对刻度标签进行此操作,但是我想知道是否也可以对轴标签进行此操作。 我想到的一个想法是使用 但是,在保留y轴的范围的同时,将所有标签(刻度和轴标签)放置在右侧并没有达到预期的效果。简而言之,我想要一种将所有y轴标签从左向右移动的方法。 问题答案: 看来您可以使用以下方法做到这一点: 请参阅此处的示例。

  • 如何更改图像的大小,使其适合打印? 例如,我想使用A4纸,其尺寸为横向11.7英寸乘8.27英寸。

  • 在一些应用场景中,有时需要绘制两个 x 轴或两个 y 轴,这样可以更直观地显现图像,从而获取更有效的数据。Matplotlib 提供的 twinx() 和 twiny() 函数,除了可以实现绘制双轴的功能外,还可以使用不同的单位来绘制曲线,比如一个轴绘制对函数,另外一个轴绘制指数函数。 下面示例绘制了一个具有两个 y 轴的图形,一个显示指数函数 exp(x),另一个显示对数函数 log(x)。 输

  • 双轴图表用于显示两种不同图表类型中的两种不同度量。需要一个日期列和两个度量来构建双轴图表。 图表中使用了不同的比例,帮助用户理解这两个度量。创建双轴图表的过程如下面给出的步骤。 例如,考虑一个数据源:Sample-Superstore 及其度量和维度。 第1步:转到工作表。 第2步:按住键盘上的Ctrl键。 第3步:选择维度OrderDate,测量销售额(Sales)和数量(Quantity),如

  • 我正在尝试创建一个双轴甘特图和折线图,以在左轴上显示任务(甘特图数据),在右轴上显示数值(折线图数据)。我想使用谷歌图表、高图或chartJs进行可视化,但不知道哪一个可以实现,请参阅我试图接近的视觉对象的问题所附的链接/图片。我可以单独显示每个图表,但不能作为组合的双轴图表一起显示。我已经尝试了各种组合图表配置,但没有任何东西接近工作。对此的任何帮助都将不胜感激。 以下是谷歌图表、HighCha

  • 折线图有多条线, 如何让其中跟随在左轴, 其中一些跟随右轴?