matplotlib.backend_bases#

抽象基类定义了渲染器和图形上下文必须实现的图元,以用作 Matplotlib 后端。

RendererBase

处理绘图/渲染操作的抽象基类。

FigureCanvasBase

Figure 与后端特定细节(如用户界面绘图区域)分离的抽象层。

GraphicsContextBase

提供颜色、线条样式等的抽象基类。

Event

所有 Matplotlib 事件处理的基类。派生类如 KeyEventMouseEvent 存储元数据,如按下的键和按钮,以及像素和 Axes 坐标中的 x 和 y 位置。

ShowBase

每个交互式后端的 Show 类的基类;“show” 可调用对象随后设置为 Show.__call__

ToolContainerBase

每个交互式后端的 Toolbar 类的基类。

class matplotlib.backend_bases.CloseEvent(name, canvas, guiEvent=None)[source]#

由图形关闭触发的事件。

Bases: Event

class matplotlib.backend_bases.DrawEvent(name, canvas, renderer)[source]#

由图形关闭触发的事件。

由画布上的绘图操作触发的事件。

在大多数后端中,订阅此事件的回调函数将在渲染完成但屏幕更新之前触发。绘制到画布渲染器的任何额外艺术家都将在没有显式调用 blit 的情况下得到反映。

警告

在这些回调中调用 canvas.drawcanvas.blit 对于所有后端可能不安全,并可能导致无限递归。

除了父 Event 类定义的属性外,DrawEvent 还具有许多特殊属性。

属性:
rendererRendererBase

绘图事件的渲染器。

class matplotlib.backend_bases.Event(name, canvas, guiEvent=None)[source]#

基类: object

Matplotlib 事件。

定义了以下属性并显示其默认值。子类可以定义其他属性。

属性:
namestr

事件名称。

canvasFigureCanvasBase

生成事件的后端特定画布实例。

guiEvent

触发 Matplotlib 事件的 GUI 事件。

class matplotlib.backend_bases.FigureCanvasBase(figure=None)[source]#

基类: object

图形渲染到的画布。

属性:
figureFigure

高级图形实例。

blit(bbox=None)[source]#

在 bbox(默认整个画布)中进行 Blit 渲染。

property button_pick_id#
property callbacks#
property device_pixel_ratio#

画布在屏幕上使用的物理像素与逻辑像素之比。

默认情况下,此值为 1,表示物理像素和逻辑像素大小相同。支持高 DPI 屏幕的子类可以设置此属性以指示该比率不同。所有 Matplotlib 交互(除非直接使用画布)都保留在逻辑像素中。

draw(*args, **kwargs)[source]#

渲染 Figure

此方法必须遍历 Artist 树,即使没有产生输出,因为它会触发用户在将输出保存到磁盘之前可能希望访问的延迟工作。例如,计算限制、自动限制和刻度值。

draw_idle(*args, **kwargs)[source]#

请求在控制权返回 GUI 事件循环时重新绘制小部件。

即使在控制权返回 GUI 事件循环之前发生多次对 draw_idle 的调用,图形也只会渲染一次。

备注

后端可以选择覆盖此方法并实现自己的策略以防止多次渲染。

events = ['resize_event', 'draw_event', 'key_press_event', 'key_release_event', 'button_press_event', 'button_release_event', 'scroll_event', 'motion_notify_event', 'pick_event', 'figure_enter_event', 'figure_leave_event', 'axes_enter_event', 'axes_leave_event', 'close_event']#
filetypes = {'eps': 'Encapsulated Postscript', 'jpeg': 'Joint Photographic Experts Group', 'jpg': 'Joint Photographic Experts Group', 'pdf': 'Portable Document Format', 'pgf': 'PGF code for LaTeX', 'png': 'Portable Network Graphics', 'ps': 'Postscript', 'raw': 'Raw RGBA bitmap', 'rgba': 'Raw RGBA bitmap', 'svg': 'Scalable Vector Graphics', 'svgz': 'Scalable Vector Graphics', 'tif': 'Tagged Image File Format', 'tiff': 'Tagged Image File Format', 'webp': 'WebP Image Format'}#
fixed_dpi = None#
flush_events()[source]#

刷新图形的 GUI 事件。

交互式后端需要重新实现此方法。

get_default_filename()[source]#

返回合适的默认文件名,包括扩展名。

classmethod get_default_filetype()[source]#

返回 rcParams["savefig.format"] (默认: 'png') 中指定的默认 savefig 文件格式。

返回的字符串不包含句点。此方法在仅支持单一文件类型的后端中被覆盖。

classmethod get_supported_filetypes()[source]#

返回此后端支持的 savefig 文件格式字典。

classmethod get_supported_filetypes_grouped()[source]#

返回此后端支持的 savefig 文件格式字典,其中键是文件类型名称,如“Joint Photographic Experts Group”,值是用于该文件类型的文件名扩展名列表,如 ['jpg', 'jpeg']。

get_width_height(*, physical=False)[source]#

返回图形的宽度和高度(以整数点或像素为单位)。

当图形在高 DPI 屏幕上使用时(并且后端支持),截断为整数的操作在按设备像素比缩放之后进行。

参数:
physicalbool, 默认: False

是否返回真实的物理像素或逻辑像素。支持 HiDPI 的后端可能会使用物理像素,但仍使用其实际大小配置画布。

返回:
width, heightint

图形的大小,以点或像素为单位,具体取决于后端。

grab_mouse(ax)[source]#

设置捕获鼠标事件的子 Axes

通常由小部件本身调用。如果鼠标已被另一个 Axes 捕获,则调用此方法是错误的。

inaxes(xy)[source]#

返回包含点 xy 的最顶层可见 Axes

参数:
xy(float, float)

画布左/下方的 (x, y) 像素位置。

返回:
Axes or None

包含该点的最顶层可见 Axes,如果该点没有 Axes,则为 None。

is_saving()[source]#

返回渲染器是否正在保存到文件,而不是渲染到屏幕缓冲区。

manager_class[source]#

的别名 FigureManagerBase

mpl_connect(s, func)[source]#

将函数 func 绑定到事件 s

参数:
sstr

以下事件 ID 之一

  • 'button_press_event'

  • 'button_release_event'

  • 'draw_event'

  • 'key_press_event'

  • 'key_release_event'

  • 'motion_notify_event'

  • 'pick_event'

  • 'resize_event'

  • 'scroll_event'

  • 'figure_enter_event',

  • 'figure_leave_event',

  • 'axes_enter_event',

  • 'axes_leave_event'

  • 'close_event'.

funccallable

要执行的回调函数,其签名必须为

def func(event: Event) -> Any

对于位置事件(按钮和按键按下/释放),如果鼠标在 Axes 上方,则事件的 inaxes 属性将被设置为事件发生所在的 Axes,此外,变量 xdataydata 属性将被设置为数据坐标中的鼠标位置。有关更多信息,请参阅 KeyEventMouseEvent

注意

如果 func 是一个方法,这只存储对该方法的弱引用。因此,图形不影响关联对象的生命周期。通常,您需要通过持有对它的引用来确保对象在图形的整个生命周期内保持活动。

返回:
cid

可与 FigureCanvasBase.mpl_disconnect 一起使用的连接 ID。

示例

def on_press(event):
    print('you pressed', event.button, event.xdata, event.ydata)

cid = canvas.mpl_connect('button_press_event', on_press)
mpl_disconnect(cid)[source]#

断开 ID 为 cid 的回调。

示例

cid = canvas.mpl_connect('button_press_event', on_press)
# ... later
canvas.mpl_disconnect(cid)
classmethod new_manager(figure, num)[source]#

使用此画布类为 figure 创建一个新的图形管理器。

备注

此方法不应在子类中重新实现。如果需要自定义管理器创建逻辑,请重新实现 FigureManager.create_with_canvas

new_timer(interval=None, callbacks=None)[source]#

创建 Timer 的新后端特定子类。

这对于通过后端本地事件循环获取周期性事件非常有用。仅适用于带有 GUI 的后端。

参数:
intervalint

计时器间隔(毫秒)。

callbackslist[tuple[callable, tuple, dict]]

(func, args, kwargs)序列,其中 func(*args, **kwargs) 将由计时器每隔 interval 执行。

返回 False0 的回调将从计时器中移除。

示例

>>> timer = fig.canvas.new_timer(callbacks=[(f1, (1,), {'a': 3})])
print_figure(filename, dpi=None, facecolor=None, edgecolor=None, orientation='portrait', format=None, *, bbox_inches=None, pad_inches=None, bbox_extra_artists=None, backend=None, **kwargs)[source]#

将图形渲染到硬拷贝。设置图形补丁的填充色和边框色。这很有用,因为某些 GUI 的图形填充色背景为灰色,您可能希望在硬拷贝中覆盖此设置。

参数:
filenamestr 或 类路径 或 类文件

保存图形的文件。

dpifloat, 默认: rcParams["savefig.dpi"] (默认: 'figure')

保存图形的分辨率(每英寸点数)。

facecolor颜色 或 'auto', 默认: rcParams["savefig.facecolor"] (默认: 'auto')

图的背景色。如果为 'auto',则使用当前图的背景色。

edgecolor颜色 或 'auto', 默认: rcParams["savefig.edgecolor"] (默认: 'auto')

图的边框颜色。如果为 'auto',则使用当前图的边框颜色。

orientation{'landscape', 'portrait'}, 默认: 'portrait'

目前仅适用于 PostScript 打印。

formatstr, 可选

强制使用特定的文件格式。如果未给出,则从 filename 扩展名推断格式,如果失败则从 rcParams["savefig.format"] (默认: 'png') 推断。

bbox_inches'tight' 或 Bbox, 默认: rcParams["savefig.bbox"] (默认: None)

以英寸为单位的边界框:只保存图的给定部分。如果为 'tight',则尝试计算图的紧密边界框。

pad_inchesfloat 或 'layout', 默认: rcParams["savefig.pad_inches"] (默认: 0.1)

当 bbox_inches 为 'tight' 时,围绕图的英寸填充量。如果为 'layout',则使用受约束或压缩布局引擎的填充;如果未使用其中一个引擎,则忽略此项。

bbox_extra_artistslist of Artist, 可选

在计算紧密边界框时将被考虑在内的额外 Artist 列表。

backendstr,可选

使用非默认后端渲染文件,例如使用“cairo”后端而不是默认的“agg”渲染 png 文件,或使用“pgf”后端而不是默认的“pdf”渲染 pdf 文件。请注意,默认后端通常就足够了。有关每种文件格式的有效后端列表,请参阅 内置后端。自定义后端可以引用为“module://...”。

release_mouse(ax)[source]#

释放 Axes ax 持有的鼠标捕获。

通常由小部件调用。即使 ax 当前没有鼠标捕获,也可以调用此方法。

required_interactive_framework = None#
property scroll_pick_id#
set_cursor(cursor)[source]#

设置当前光标。

如果后端不显示任何内容,这可能无效。

如果后端需要,此方法应在设置光标后触发后端事件循环中的更新,因为此方法可能在长时间运行的任务之前调用,在此期间 GUI 不会更新。

参数:
cursorCursors

要在画布上显示的光标。注意:某些后端可能会更改整个窗口的光标。

start_event_loop(timeout=0)[source]#

启动阻塞事件循环。

此类事件循环由交互式函数使用,例如 ginputwaitforbuttonpress,用于等待事件。

事件循环会一直阻塞,直到回调函数触发 stop_event_loop 或达到 timeout

如果 timeout 为 0 或负数,则永不超时。

只有交互式后端需要重新实现此方法,它依赖于正确实现 flush_events

交互式后端应以更本机的方式实现此功能。

stop_event_loop()[source]#

停止当前阻塞事件循环。

交互式后端需要重新实现此功能以匹配 start_event_loop

supports_blit = False#
class matplotlib.backend_bases.FigureManagerBase(canvas, num)[source]#

基类: object

一个与后端无关的图形容器和控制器抽象。

图形管理器由 pyplot 使用,以与窗口进行与后端无关的交互。它是表示屏幕上可见图形的真实(GUI)框架的适配器。

图形管理器连接到一个特定的画布实例,该画布实例又连接到一个特定的图形实例。要在用户代码中访问给定图形的图形管理器,通常使用 fig.canvas.manager

GUI 后端从此类派生,将常见操作(如 显示调整大小)转换为 GUI 特定代码。非 GUI 后端不支持这些操作,可以直接使用基类。

以下基本操作是可访问的

窗口操作

按键和鼠标按钮处理

图形管理器通过将 key_press_handler 连接到 matplotlib 事件系统来设置默认的键盘和鼠标按键处理。这确保了在不同后端之间使用相同的快捷方式和鼠标操作。

其他操作

子类将具有额外的属性和函数来访问更多功能。这当然是后端特定的。例如,大多数 GUI 后端都具有 windowtoolbar 属性,可以访问相应框架的原生 GUI 小部件。

属性:
canvasFigureCanvasBase

后端特定的画布实例。

numint 或 str

图形编号。

key_press_handler_idint

使用工具管理器时的默认按键处理程序 cid。要禁用默认按键处理,请使用

figure.canvas.mpl_disconnect(
    figure.canvas.manager.key_press_handler_id)
button_press_handler_idint

使用工具管理器时的默认鼠标按键处理程序 cid。要禁用默认鼠标按键处理,请使用

figure.canvas.mpl_disconnect(
    figure.canvas.manager.button_press_handler_id)
classmethod create_with_canvas(canvas_class, figure, num)[source]#

使用特定的 *canvas_class* 为给定 *figure* 创建一个管理器。

如果后端在设置画布或管理器方面有特殊需求,应重写此方法。

destroy()[source]#
full_screen_toggle()[source]#
get_window_title()[source]#

返回包含图形的窗口的标题文本。

classmethod pyplot_show(*, block=None)[source]#

显示所有图形。此方法是 pyplot.show 的实现。

要自定义 pyplot.show 的行为,交互式后端通常应重写 start_main_loop;如果需要更定制化的逻辑,pyplot_show 也可以被重写。

参数:
block布尔值, 可选

是否通过调用 start_main_loop 进行阻塞。默认值为 None,这意味着如果既不在 IPython 的 %pylab 模式下,也不在 interactive 模式下,则进行阻塞。

resize(w, h)[source]#

对于 GUI 后端,调整窗口大小(以物理像素为单位)。

set_window_title(title)[source]#

设置包含图形的窗口的标题文本。

示例

>>> fig = plt.figure()
>>> fig.canvas.manager.set_window_title('My figure')
show()[source]#

对于 GUI 后端,显示图形窗口并重绘。对于非 GUI 后端,会引发异常,除非在无头模式下运行(即在 Linux 上 DISPLAY 未设置);此异常在 Figure.show 中转换为警告。

classmethod start_main_loop()[source]#

启动主事件循环。

此方法由 FigureManagerBase.pyplot_show 调用,它是 pyplot.show 的实现。要自定义 pyplot.show 的行为,交互式后端通常应重写 start_main_loop;如果需要更定制化的逻辑,pyplot_show 也可以被重写。

class matplotlib.backend_bases.GraphicsContextBase[source]#

基类: object

提供颜色、线条样式等的抽象基类。

copy_properties(gc)[source]#

将属性从 *gc* 复制到自身。

get_alpha()[source]#

返回用于混合的alpha值 - 不支持所有后端。

get_antialiased()[source]#

返回对象是否应尝试进行抗锯齿渲染。

get_capstyle()[source]#

返回 CapStyle

get_clip_path()[source]#

返回剪裁路径,形式为 (path, transform),其中 path 是一个 Path 实例,transform 是在剪裁之前应用于路径的仿射变换。

get_clip_rectangle()[source]#

Bbox 实例的形式返回剪裁矩形。

get_dashes()[source]#

以 (offset, dash-list) 对的形式返回虚线样式。

有关详细信息,请参阅 set_dashes

默认值为 (None, None)。

get_forced_alpha()[source]#

返回 `get_alpha()` 给出的值是否应覆盖任何其他 alpha 通道值。

get_gid()[source]#

如果设置了对象标识符,则返回该标识符,否则返回 None。

get_hatch()[source]#

获取当前填充样式。

get_hatch_color()[source]#

获取填充颜色。

get_hatch_linewidth()[source]#

获取填充线宽。

get_hatch_path(density=6.0)[source]#

返回当前填充的 Path

get_joinstyle()[source]#

返回 JoinStyle

get_linewidth()[source]#

返回以点为单位的线宽。

get_rgb()[source]#

返回一个包含三或四个 0-1 之间浮点数的元组。

get_sketch_params()[source]#

返回艺术家的草图参数。

返回:
元组或 None

一个包含以下元素的 3 元组:

  • scale:垂直于源线的摆动幅度。

  • length:沿线的摆动长度。

  • randomness:长度收缩或扩展的比例因子。

如果未设置任何草图参数,则可能返回 None

get_snap()[source]#

返回捕捉设置,可以是

  • True:将顶点捕捉到最近的像素中心

  • False:保持顶点不变

  • None:(自动)如果路径只包含直线段,则四舍五入到最近的像素中心

get_url()[source]#

如果设置了 URL,则返回该 URL,否则返回 None。

restore()[source]#

从堆栈中恢复图形上下文 - 仅适用于在堆栈上保存图形上下文的后端。

set_alpha(alpha)[source]#

设置用于混合的alpha值 - 不支持所有后端。

如果 alpha=None(默认值),则前景和填充颜色的 alpha 分量将用于设置各自的透明度(如果适用);否则,alpha 将覆盖它们。

set_antialiased(b)[source]#

设置对象是否应使用抗锯齿渲染绘制。

set_capstyle(cs)[source]#

设置线的端点绘制方式。

参数:
csCapStyle 或 {'butt', 'projecting', 'round'}
set_clip_path(path)[source]#

将剪裁路径设置为 TransformedPath 或 None。

set_clip_rectangle(rectangle)[source]#

将剪裁矩形设置为 Bbox 或 None。

set_dashes(dash_offset, dash_list)[source]#

为 gc 设置虚线样式。

参数:
dash_offset浮点数

虚线图案开始的距离(以点为单位)。通常设置为 0。

dash_list类数组或 None

开/关序列(以点为单位)。None 表示实线。所有其他值必须是非负数(\(\ge 0\))。

备注

有关更多信息,请参阅 PostScript 语言参考 第 666 页。

set_foreground(fg, isRGBA=False)[source]#

设置前景色。

参数:
fg颜色
isRGBA布尔值

如果 *fg* 已知为 (r, g, b, a) 元组,可以将 *isRGBA* 设置为 True 以提高性能。

set_gid(id)[source]#

设置 ID。

set_hatch(hatch)[source]#

设置填充样式(用于填充)。

set_hatch_color(hatch_color)[source]#

设置填充颜色。

set_hatch_linewidth(hatch_linewidth)[source]#

设置填充线宽。

set_joinstyle(js)[source]#

设置线段之间的连接绘制方式。

参数:
jsJoinStyle 或 {'miter', 'round', 'bevel'}
set_linewidth(w)[source]#

设置线宽(以点为单位)。

set_sketch_params(scale=None, length=None, randomness=None)[source]#

设置草图参数。

参数:
scale浮点数,可选

摆动垂直于源线的幅度,以像素为单位。如果 scale 为 None 或未提供,则不提供草图滤镜。

length浮点数,默认值:128

沿线的摆动长度,以像素为单位。

randomness浮点数,默认值:16

长度收缩或扩展的比例因子。

set_snap(snap)[source]#

设置捕捉设置,可以是

  • True:将顶点捕捉到最近的像素中心

  • False:保持顶点不变

  • None:(自动)如果路径只包含直线段,则四舍五入到最近的像素中心

set_url(url)[source]#

为兼容后端中的链接设置 URL。

class matplotlib.backend_bases.KeyEvent(name, canvas, key, x=0, y=0, guiEvent=None)[source]#

基类:LocationEvent

键盘事件(按键按下、按键释放)。

除了父类 EventLocationEvent 定义的属性外,KeyEvent 还有一些特殊属性。

属性:
keyNone 或 str

按下的键。可以是 *None*、单个区分大小写的 Unicode 字符(“g”、“G”、“#”等)、特殊键(“control”、“shift”、“f1”、“up”等)或上述的组合(例如,“ctrl+alt+g”、“ctrl+alt+G”)。

备注

修饰键将作为前缀添加到按下的键,顺序为“ctrl”、“alt”、“super”。此规则的例外是当按下的键本身是修饰键时,因此“ctrl+alt”和“alt+control”都可以是有效的键值。

示例

def on_key(event):
    print('you pressed', event.key, event.xdata, event.ydata)

cid = fig.canvas.mpl_connect('key_press_event', on_key)
class matplotlib.backend_bases.LocationEvent(name, canvas, x, y, guiEvent=None, *, modifiers=None)[source]#

由图形关闭触发的事件。

具有屏幕位置的事件。

除了父类 Event 定义的属性外,LocationEvent 还有一些特殊属性。

属性:
x, yint 或 None

事件位置,以画布左下角为原点的像素坐标。

inaxesAxes 或 None

鼠标悬停在其上的 Axes 实例(如果有的话)。

xdata, ydata浮点数或 None

鼠标在 *inaxes* 中的数据坐标,如果鼠标未在 Axes 上,则为 *None*。

modifiersfrozenset

当前按下的键盘修饰键(KeyEvent 除外)。

class matplotlib.backend_bases.MouseButton(*values)[source]#

基类:IntEnum

BACK = 8[source]#
FORWARD = 9[source]#
LEFT = 1[source]#
MIDDLE = 2[source]#
RIGHT = 3[source]#
class matplotlib.backend_bases.MouseEvent(name, canvas, x, y, button=None, key=None, step=0, dblclick=False, guiEvent=None, *, buttons=None, modifiers=None)[source]#

基类:LocationEvent

鼠标事件('button_press_event'、'button_release_event'、'scroll_event'、'motion_notify_event')。

除了父类 EventLocationEvent 定义的属性外,MouseEvent 还有一些特殊属性。

属性:
buttonNone 或 MouseButton 或 {'up', 'down'}

按下的按钮。“up”和“down”用于滚动事件。

请注意,LEFT 和 RIGHT 实际上是指“主”按钮和“次”按钮,即,如果用户调换了左右按钮(“左手设置”),则 LEFT 按钮将是物理上的右侧按钮。

如果此项未设置,*name* 为“scroll_event”,且 *step* 不为零,则此项将根据 *step* 的符号设置为“up”或“down”。

buttonsNone 或 frozenset

对于“motion_notify_event”,当前按下的鼠标按钮(零个或多个 MouseButtons 的集合);对于其他事件,为 None。

注意

对于“motion_notify_event”,此属性比 button(单数)属性更准确,后者是从画布内发生的最后一次“button_press_event”或“button_release_event”获得的(因此,如果鼠标状态的最后一次更改发生在画布未获得焦点时,则会出错;并且 2. 无法报告同时按下多个按钮的情况)。

此属性未为“button_press_event”和“button_release_event”设置,因为 GUI 工具包在报告按下/释放发生*之前*还是*之后*的按钮状态方面存在不一致。

警告

在 macOS 上,Tk 后端即使按下多个按钮也只报告一个按钮。

keyNone 或 str

鼠标事件触发时按下的键,例如“shift”。请参阅 KeyEvent

警告

此键当前是从画布内发生的最后一次“key_press_event”或“key_release_event”获取的。因此,如果键盘状态的最后一次更改发生在画布未获得焦点时,此属性将是错误的。另一方面,modifiers 属性应始终正确,但它只能报告修饰键。

step浮点数

滚动步数(“up”为正,'down'为负)。此属性仅适用于“scroll_event”,否则默认为 0。

dblclick布尔值

事件是否为双击。此属性仅适用于“button_press_event”,否则为 False。特别是,它不用于“button_release_event”。

示例

def on_press(event):
    print('you pressed', event.button, event.xdata, event.ydata)

cid = fig.canvas.mpl_connect('button_press_event', on_press)
class matplotlib.backend_bases.NavigationToolbar2(canvas)[source]#

基类: object

导航光标的基类,版本 2。

后端必须实现一个画布,用于处理“button_press_event”和“button_release_event”的连接。有关详细信息,请参阅 FigureCanvasBase.mpl_connect()

它们还必须定义

save_figure()

保存当前图形。

draw_rubberband()(可选)

绘制缩放矩形“橡皮筋”矩形。

set_message()(可选)

显示消息。

set_history_buttons()(可选)

您可以更改历史记录后退/前进按钮以指示禁用/启用状态。

并重写 __init__ 来设置工具栏——不要忘记调用基类初始化方法。通常,__init__ 需要设置连接到 homebackforwardpanzoomsave_figure 方法的工具栏按钮,并使用数据路径的“images”子目录中的标准图标。

就这样,剩下的我们来完成!

UNKNOWN_SAVED_STATUS = <object object>#
back(*args)[source]#

在视图限制堆栈中向后移动。

为了方便直接作为 GUI 回调连接,GUI 回调通常会传递额外的参数,此方法接受任意参数,但不会使用它们。

configure_subplots(*args)[source]#
drag_pan(event)[source]#

平移/缩放模式下拖动时的回调。

drag_zoom(event)[source]#

缩放模式下拖动时的回调。

draw_rubberband(event, x0, y0, x1, y1)[source]#

绘制一个矩形橡皮筋以指示缩放限制。

请注意,不保证 x0 <= x1y0 <= y1

forward(*args)[source]#

在视图限制堆栈中向前移动。

为了方便直接作为 GUI 回调连接,GUI 回调通常会传递额外的参数,此方法接受任意参数,但不会使用它们。

home(*args)[source]#

恢复原始视图。

为了方便直接作为 GUI 回调连接,GUI 回调通常会传递额外的参数,此方法接受任意参数,但不会使用它们。

mouse_move(event)[source]#
pan(*args)[source]#

切换平移/缩放工具。

左键平移,右键缩放。

press_pan(event)[source]#

平移/缩放模式下鼠标按键按下的回调。

press_zoom(event)[source]#

矩形缩放模式下鼠标按键按下的回调。

push_current()[source]#

将当前视图限制和位置压入堆栈。

release_pan(event)[source]#

平移/缩放模式下鼠标按键释放的回调。

release_zoom(event)[source]#

矩形缩放模式下鼠标按键释放的回调。

remove_rubberband()[source]#

移除橡皮筋。

save_figure(*args)[source]#

保存当前图形。

后端实现可以选择返回已保存文件的绝对路径(如果有的话),作为字符串。

如果未创建文件,则返回 None

如果后端未实现此功能,则返回 NavigationToolbar2.UNKNOWN_SAVED_STATUS

返回:
str 或 NavigationToolbar2.UNKNOWN_SAVED_STATUSNone

已保存图形的文件路径。如果图形未保存,则返回 None。当后端不提供信息时,返回 NavigationToolbar2.UNKNOWN_SAVED_STATUS

set_history_buttons()[source]#

启用或禁用后退/前进按钮。

set_message(s)[source]#

在工具栏或状态栏显示消息。

toolitems = (('Home', '重置原始视图', 'home', 'home'), ('Back', '返回上一视图', 'back', 'back'), ('Forward', '前进到下一视图', 'forward', 'forward'), (None, None, None, None), ('Pan', '左键平移,右键缩放\nx/y 轴固定,CTRL 键固定宽高比', 'move', 'pan'), ('Zoom', '矩形缩放\nx/y 轴固定', 'zoom_to_rect', 'zoom'), ('Subplots', '配置子图', 'subplots', 'configure_subplots'), (None, None, None, None), ('Save', '保存图形', 'filesave', 'save_figure'))#
update()[source]#

重置坐标轴堆栈。

zoom(*args)[source]#
exception matplotlib.backend_bases.NonGuiException[source]#

基类:Exception

在非 GUI 后端尝试显示图形时引发。

class matplotlib.backend_bases.PickEvent(name, canvas, mouseevent, artist, guiEvent=None, **kwargs)[source]#

由图形关闭触发的事件。

拾取事件。

当用户在画布上拾取一个与已通过 Artist.set_picker 设置为可拾取的艺术家足够接近的位置时,此事件将被触发。

除了父类 Event 定义的属性外,PickEvent 还有一些特殊属性。

属性:
mouseeventMouseEvent

生成拾取事件的鼠标事件。

artistArtist

被拾取的艺术家。请注意,艺术家默认不可拾取(请参阅 Artist.set_picker)。

其他

根据拾取对象的类型,可能会有额外的属性;例如,Line2D 拾取可能定义与 PatchCollection 拾取不同的额外属性。

示例

将函数 on_pick() 绑定到拾取事件,该函数打印拾取数据点的坐标

ax.plot(np.rand(100), 'o', picker=5)  # 5 points tolerance

def on_pick(event):
    line = event.artist
    xdata, ydata = line.get_data()
    ind = event.ind
    print(f'on pick line: {xdata[ind]:.3f}, {ydata[ind]:.3f}')

cid = fig.canvas.mpl_connect('pick_event', on_pick)
class matplotlib.backend_bases.RendererBase[source]#

基类: object

处理绘图/渲染操作的抽象基类。

后端必须实现以下方法才能实现完整功能(尽管仅实现 draw_path 就可以提供一个功能强大的后端)

出于优化原因,后端*应该*实现以下方法

close_group(s)[source]#

关闭带有标签 *s* 的分组元素。

仅由 SVG 渲染器使用。

draw_gouraud_triangles(gc, triangles_array, colors_array, transform)[source]#

绘制一系列 Gouraud 三角形。

参数:
gcGraphicsContextBase

图形上下文。

triangles_array(N, 3, 2) 类数组

N个三角形的 (x, y) 点数组。

colors_array(N, 3, 4) 类数组

N个三角形每个点的 RGBA 颜色数组。

transformTransform

应用于点的仿射变换。

draw_image(gc, x, y, im, transform=None)[source]#

绘制 RGBA 图像。

参数:
gcGraphicsContextBase

带有裁剪信息的图形上下文。

x浮点数

从画布左侧开始的物理单位(即点或像素)距离。

y浮点数

从画布底部开始的物理单位(即点或像素)距离。

im(N, M, 4) numpy.uint8 数组

RGBA 像素数组。

transformAffine2DBase

当且仅当具体后端编写为 option_scale_image 返回 True 时,仿射变换(即 Affine2DBase)*可能*被传递给 draw_image。变换的平移向量以物理单位(即点或像素)给出。请注意,此变换不会覆盖 *x* 和 *y*,并且必须在通过 *x* 和 *y* 平移结果*之前*应用(这可以通过将 *x* 和 *y* 添加到由 *transform* 定义的平移向量来实现)。

draw_markers(gc, marker_path, marker_trans, path, trans, rgbFace=None)[source]#

path 的每个顶点(不包括控制点)绘制一个标记。

基本(回退)实现会多次调用 draw_path。后端可能希望重写此方法,以便只绘制一次标记并多次重用它。

参数:
gcGraphicsContextBase

图形上下文。

marker_pathPath

标记的路径。

marker_transTransform

应用于标记的仿射变换。

pathPath

绘制标记的位置。

transTransform

应用于路径的仿射变换。

rgbFace颜色,可选
draw_path(gc, path, transform, rgbFace=None)[source]#

使用给定的仿射变换绘制 Path 实例。

draw_path_collection(gc, master_transform, paths, all_transforms, offsets, offset_trans, facecolors, edgecolors, linewidths, linestyles, antialiaseds, urls, offset_position)[source]#

绘制一组 paths

每个路径首先由 all_transforms 中相应的条目(一个 (3, 3) 矩阵列表)变换,然后由 master_transform 变换。它们再通过 offsets 中相应的条目平移,offsets 条目已先由 offset_trans 变换。

facecolorsedgecolorslinewidthslinestylesantialiased 是设置相应属性的列表。

offset_position 现在未使用,但参数保留是为了向后兼容。

基本(回退)实现多次调用 draw_path。后端可能希望覆盖此方法,以便只渲染每组路径数据一次,然后使用不同的偏移量、颜色、样式等多次引用该路径。提供了生成器方法 _iter_collection_raw_paths_iter_collection,以帮助(并标准化)跨后端的实现。强烈建议使用这些生成器,以便对 draw_path_collection 行为的更改可以全局生效。

draw_quad_mesh(gc, master_transform, meshWidth, meshHeight, coordinates, offsets, offsetTrans, facecolors, antialiased, edgecolors)[source]#

绘制一个四边形网格(quadmesh)。

基本(回退)实现将四边形网格转换为路径,然后调用 draw_path_collection

draw_tex(gc, x, y, s, prop, angle, *, mtext=None)[source]#

绘制一个 TeX 实例。

参数:
gcGraphicsContextBase

图形上下文。

x浮点数

文本在显示坐标中的 x 位置。

y浮点数

文本基线在显示坐标中的 y 位置。

sstr

TeX 文本字符串。

propFontProperties

字体属性。

angle浮点数

逆时针旋转角度(度)。

mtextText

要渲染的原始文本对象。

draw_text(gc, x, y, s, prop, angle, ismath=False, mtext=None)[source]#

绘制文本实例。

参数:
gcGraphicsContextBase

图形上下文。

x浮点数

文本在显示坐标中的 x 位置。

y浮点数

文本基线在显示坐标中的 y 位置。

sstr

文本字符串。

propFontProperties

字体属性。

angle浮点数

逆时针旋转角度(度)。

ismath布尔值 或 "TeX"

如果为 True,则使用 mathtext 解析器。

mtextText

要渲染的原始文本对象。

备注

后端实现者注意事项

RendererBase.draw_text 也支持将 "TeX" 传递给 ismath 参数以使用 TeX 渲染,但这对于实际的渲染后端来说不是必需的,事实上许多内置后端都不支持此功能。相反,TeX 渲染是由 draw_tex 提供的。

flipy()[source]#

返回 y 值是否从上到下递增。

请注意,这仅影响文本的绘制。

get_canvas_width_height()[source]#

返回显示坐标中的画布宽度和高度。

get_image_magnification()[source]#

获取传递给 draw_image 的图像的放大系数。允许后端图像以不同于其他艺术家的分辨率显示。

get_texmanager()[source]#

返回 TexManager 实例。

get_text_width_height_descent(s, prop, ismath)[source]#

获取字符串 sFontProperties prop 下的宽度、高度和下行距离(从底部到基线的偏移量),以显示坐标表示。

字符串 s 开头和结尾的空白字符包含在报告的宽度中。

new_gc()[source]#

返回一个 GraphicsContextBase 实例。

open_group(s, gid=None)[source]#

打开一个分组元素,其标签为 s,ID 为 gid(如果已设置)。

仅由 SVG 渲染器使用。

option_image_nocomposite()[source]#

返回是否应跳过 Matplotlib 的图像合成。

栅格后端通常应返回 False(让 C 级栅格化器处理图像合成);矢量后端通常应返回 not rcParams["image.composite_image"]

option_scale_image()[source]#

返回 draw_image 中是否支持任意仿射变换(大多数矢量后端为 True)。

points_to_pixels(points)[source]#

将点转换为显示单位。

你需要重写此函数(除非你的后端没有 dpi,例如 postscript 或 svg)。一些成像系统假定每英寸像素的某个值

points to pixels = points * pixels_per_inch/72 * dpi/72
参数:
pointsfloat or array-like
返回:
转换为像素的点
start_filter()[source]#

切换到临时渲染器以实现图像过滤效果。

目前仅由 agg 渲染器支持。

start_rasterizing()[source]#

切换到栅格渲染器。

MixedModeRenderer 使用。

stop_filter(filter_func)[source]#

切换回原始渲染器。临时渲染器的内容将由 filter_func 处理,并作为图像绘制到原始渲染器上。

目前仅由 agg 渲染器支持。

stop_rasterizing()[source]#

切换回矢量渲染器,并将栅格渲染器的内容作为图像绘制到矢量渲染器上。

MixedModeRenderer 使用。

class matplotlib.backend_bases.ResizeEvent(name, canvas)[source]#

由图形关闭触发的事件。

由画布大小调整触发的事件。

除了父 Event 类定义的属性外,ResizeEvent 还具有一些特殊属性。

属性:
widthint

画布的宽度,单位为像素。

heightint

画布的高度,单位为像素。

class matplotlib.backend_bases.ShowBase[source]#

基类: _Backend

用于在后端生成 show() 函数的简单基类。

子类必须覆盖 mainloop() 方法。

class matplotlib.backend_bases.TimerBase(interval=None, callbacks=None)[source]#

基类: object

提供计时器事件的基类,对动画等很有用。后端需要实现一些特定的方法,以便使用自己的计时机制,从而将计时器事件集成到其事件循环中。

子类必须覆盖以下方法:

  • _timer_start:用于启动计时器的后端特定代码。

  • _timer_stop:用于停止计时器的后端特定代码。

子类还可以覆盖以下方法:

  • _timer_set_single_shot:用于将计时器设置为单次触发模式的代码,如果计时器对象支持的话。如果不支持,则 Timer 类本身将存储该标志,并且应覆盖 _on_timer 方法以支持此类行为。

  • _timer_set_interval:用于在计时器上设置间隔的代码,如果计时器对象上有相应方法的话。

  • _on_timer:任何计时器对象都应调用的内部函数,它将处理运行所有已设置回调的任务。

参数:
intervalint, default: 1000ms

计时器事件之间的时间间隔,单位为毫秒。将存储为 timer.interval

callbackslist[tuple[callable, tuple, dict]]

一个 (func, args, kwargs) 元组列表,将在计时器事件触发时调用。此列表可通过 timer.callbacks 访问并可直接操作,或者可以使用函数 add_callbackremove_callback

add_callback(func, *args, **kwargs)[source]#

注册 func,以便在事件触发时由计时器调用。提供的任何额外参数都将传递给 func

此函数返回 func,因此可以将其用作装饰器。

property interval#

计时器事件之间的时间,单位为毫秒。

remove_callback(func, *args, **kwargs)[source]#

从回调列表中移除 func

argskwargs 是可选的,用于区分注册为使用不同参数调用的同一函数的副本。此行为已弃用。将来,将不再考虑 *args, **kwargs;要使特定回调本身可移除,请将其作为 functools.partial 对象传递给 add_callback

property single_shot#

此计时器是否应在单次运行后停止。

start(interval=<deprecated parameter>)[source]#

启动计时器对象。

参数:
intervalint, optional

计时器间隔,单位为毫秒;如果提供,将覆盖先前设置的间隔。

stop()[source]#

停止计时器。

class matplotlib.backend_bases.ToolContainerBase(toolmanager)[source]#

基类: object

所有工具容器的基类,例如工具栏。

属性:
toolmanagerToolManager

ToolContainer 想要与之通信的工具。

add_tool(tool, group, position=-1)[source]#

将工具添加到此容器。

参数:
tooltool_like

要添加的工具,请参见 ToolManager.get_tool

groupstr

将此工具添加到的组的名称。

positionint, default: -1

此工具在组中的位置。

add_toolitem(name, group, position, image, description, toggle)[source]#

向容器添加工具项的钩子。

此钩子必须在每个后端中实现,并包含将元素添加到工具栏的后端特定代码。

警告

这是后端实现的一部分,不应由最终用户调用。他们应该改为调用 ToolContainerBase.add_tool

与按钮点击事件关联的回调必须 精确地self.trigger_tool(name)

参数:
namestr

要添加的工具的名称,此名称用作工具的 ID 和按钮的默认标签。

groupstr

此工具所属组的名称。

positionint

工具在其组中的位置,如果 -1,则位于末尾。

imagestr

按钮图像的文件名或 None

descriptionstr

工具的描述,用于工具提示。

togglebool
  • True:按钮是一个切换按钮(在连续点击之间改变按下/未按下状态)。

  • False:按钮是一个普通按钮(释放后返回未按下状态)。

remove_toolitem(name)[source]#

从容器中移除工具项的钩子。

此钩子必须在每个后端中实现,并包含从工具栏中移除元素的后端特定代码;当 ToolManager 发出 tool_removed_event 时会调用它。

由于某些工具仅存在于 ToolManager 而不存在于 ToolContainer 上,因此当对容器中不存在的工具调用此方法时,它必须是空操作。

警告

这是后端实现的一部分,不应由最终用户调用。他们应该改为调用 ToolManager.remove_tool

参数:
namestr

要移除的工具的名称。

set_message(s)[source]#

在工具栏上显示消息。

参数:
sstr

消息文本。

toggle_toolitem(name, toggled)[source]#

在不触发事件的情况下切换工具项的钩子。

此钩子必须在每个后端中实现,并包含静默切换工具栏元素的后端特定代码。

警告

这是后端实现的一部分,不应由最终用户调用。他们应该改为调用 ToolManager.trigger_toolToolContainerBase.trigger_tool(两者等效)。

参数:
namestr

要切换的工具的 ID。

toggledbool

是否将此工具设置为已切换状态。

trigger_tool(name)[source]#

触发工具。

参数:
namestr

从容器内部触发的工具的名称(ID)。

matplotlib.backend_bases.button_press_handler(event, canvas=None, toolbar=None)[source]#

Matplotlib 对额外鼠标按钮的默认按钮操作。

参数与 key_press_handler 相同,但 event 是一个 MouseEvent

matplotlib.backend_bases.get_registered_canvas_class(format)[source]#

返回给定文件格式的注册默认画布。处理所需后端的延迟导入。

matplotlib.backend_bases.key_press_handler(event, canvas=None, toolbar=None)[source]#

实现在 导航键盘快捷键 中描述的画布和工具栏的默认 Matplotlib 键盘绑定。

参数:
eventKeyEvent

按键按下/释放事件。

canvasFigureCanvasBase, default: event.canvas

后端特定的画布实例。此参数是为了向后兼容而保留的,但如果设置,则应始终等于 event.canvas

toolbarNavigationToolbar2, default: event.canvas.toolbar

导航光标工具栏。此参数是为了向后兼容而保留的,但如果设置,则应始终等于 event.canvas.toolbar

matplotlib.backend_bases.register_backend(format, backend, description=None)[source]#

注册一个后端,用于保存到给定文件格式。

参数:
formatstr

文件扩展名

backendmodule string or canvas class

用于处理文件输出的后端

descriptionstr, default: ""

文件类型的描述。