Python 如何在不使用pyplot的情况下在matplotlib中创建绘图

Python 如何在不使用pyplot的情况下在matplotlib中创建绘图,python,matplotlib,Python,Matplotlib,我已经每天使用matplotlib五个月了,但我仍然觉得创建新的数字令人困惑 通常,我使用2x2子地块创建一个地物,例如: import matplotlib.pyplot as plt import itertools as it fig,axes = plt.subplots(2,2) axit = (ax for ax in it.chain(*axes)) for each of four data series I want to plot: ax = next(axit)

我已经每天使用matplotlib五个月了,但我仍然觉得创建新的数字令人困惑

通常,我使用2x2子地块创建一个地物,例如:

import matplotlib.pyplot as plt
import itertools as it
fig,axes = plt.subplots(2,2)
axit = (ax for ax in it.chain(*axes))
for each of four data series I want to plot:
    ax = next(axit)
    ax.plot(...)
我现在的问题是:如何能够完全独立于pyplot进行操作,也就是说,如何创建一个图形,用图形填充它,进行样式更改,并且只告诉该图形在我希望它出现的确切时刻出现。以下是我遇到的问题:

import matplotlib as mpl
gs = gridspec.GridSpec(2,2)
fig = mpl.figure.Figure()
ax1 = fig.add_subplot(gs[0])
ax1.plot([1,2,3])
ax2 = fig.add_subplot(gs[1])
ax2.plot([3,2,1])
运行上述操作后,唯一想到的是使用:

plt.draw()
但这是行不通的。缺少什么可以使带有绘图的图形显示?还有,是

fig = mpl.figure.Figure()

我要做的就是创建没有pyplot的图形

您可以手动将合适的附件连接到您的体形,然后显示:

from matplotlib.backends import backend_qt4agg  # e.g.
backend_qt4agg.new_figure_manager_given_figure(1, fig)
fig.show()

。。。但是为什么不使用pyplot呢?

为什么不使用pyplot呢?我正在使用Tkinter在GUI中嵌入matplotlib。我在一本书中和网上看到了一些代码,然后就开始运行了。他们在GUI中嵌入绘图的方式不使用pyplot。现在,我尝试添加一些新功能,比如使用gridspec中的多个绘图,而不仅仅是一个简单的绘图。这是一个关于如何在Tk中嵌入图形的示例:我使用Tkinter在GUI中嵌入matplotlib。我在一本书中和网上看到了一些代码,然后就开始运行了。他们在GUI中嵌入绘图的方式不使用pyplot。现在,我正在尝试添加一些新功能,比如使用gridspec的多个绘图,而不仅仅是一个简单的绘图。但是,据我所知,我从文档中阅读了以下内容:“matplotlib可以针对不同的输出,这些功能中的每一个都称为后端”“有两种类型的后端:用户界面后端(用于pygtk、wxpython、tkinter、qt4或macosx;也称为“交互式后端”)和硬拷贝后端,用于制作图像文件(PNG、SVG、PDF、PS;也称为“非交互式后端”)。“为了使图形用户界面的内容更具可定制性,matplotlib分离了渲染器的概念“用户界面的标准渲染器是Agg”,因此,据我所知,您使用的是后端Qt4agg,即“Agg渲染到Qt4画布”。Tkinter使用Tkagg,即“Agg渲染到Tk画布”。来自艺术家教程:matplotlib API有三层。matplotlib.backend_bases.FigureCanvas是绘制图形的区域,matplotlib.backend_bases.Renderer是知道如何在FigureCanvas上绘制的对象,matplotlib.Artister.Artister是知道如何使用渲染器在画布上绘制的对象。“所以,看看我是否理解:当你不使用pyplot时,你必须手动将艺术家连接到后端(即渲染器+画布)。这就是你在行中所做的:后端\u qt4agg。新的\u图\u管理器\u给定的\u图(1,图)对吗?”?