matplotlib.backend_bases#

抽象基类定义了渲染器和图形上下文必须实现的原始操作,以便作为 Matplotlib 后端提供服务。

RendererBase

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

FigureCanvasBase

抽象层,将 Figure 与用户界面绘图区域等后端特定细节分离开来。

GraphicsContextBase

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

事件

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

ShowBase

每个交互式后端的 Show 类的基类;然后将可调用的 'show' 设置为 Show.__call__

ToolContainerBase

每个交互式后端的工具栏类的基类。

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

基类:Event

由关闭图形触发的 事件。

class matplotlib.backend_bases.DrawEvent(name, canvas, renderer)[源代码][源代码]#

基类:Event

在画布上进行绘制操作触发的事件。

在大多数后端,订阅此事件的回调将在渲染完成后但在屏幕更新之前触发。任何额外绘制到画布渲染器上的艺术家都将被反映出来,而无需显式调用 blit

警告

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

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

属性:
渲染器 : RendererBaseRendererBase

绘制事件的渲染器。

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

基类:object

一个 Matplotlib 事件。

以下属性被定义并显示了它们的默认值。子类可以定义额外的属性。

属性:
名称str

事件名称。

画布 : FigureCanvasBaseFigureCanvasBase

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

guiEvent

触发 Matplotlib 事件的 GUI 事件。

property guiEvent#

!! 由 numpydoc 处理 !!

class matplotlib.backend_bases.FigureCanvasBase(figure=None)[源代码][源代码]#

基类:object

图形渲染的画布。

属性:
figure

一个高级的图形实例。

blit(bbox=None)[源代码][源代码]#

在 bbox 中 Blit 画布(默认整个画布)。

property button_pick_id#

!! 由 numpydoc 处理 !!

property callbacks#

!! 由 numpydoc 处理 !!

property device_pixel_ratio#

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

默认情况下,这是1,意味着物理像素和逻辑像素大小相同。支持高DPI屏幕的子类可能会设置此属性,以表明该比例不同。除非直接与画布交互,否则所有Matplotlib交互仍保持在逻辑像素中。

draw(*args, **kwargs)[源代码][源代码]#

渲染 Figure

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

draw_idle(*args, **kwargs)[源代码][源代码]#

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

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

注释

后端可以选择重写该方法,并实现自己的策略以防止多次渲染。

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()[源代码][源代码]#

刷新图形界面的GUI事件。

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

get_default_filename()[源代码][源代码]#

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

classmethod get_default_filetype()[源代码][源代码]#

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

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

classmethod get_supported_filetypes()[源代码][源代码]#

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

classmethod get_supported_filetypes_grouped()[源代码][源代码]#

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

get_width_height(*, physical=False)[源代码][源代码]#

返回图形在整数点或像素中的宽度和高度。

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

参数:
物理bool, 默认: False

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

返回:
宽度, 高度整数

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

grab_mouse(ax)[源代码][源代码]#

设置正在抓取鼠标事件的子 Axes

通常由小部件本身调用。如果鼠标已经被另一个 Axes 捕获,调用此函数将是一个错误。

inaxes(xy)[源代码][源代码]#

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

参数:
xy(浮点数, 浮点数)

(x, y) 像素位置从画布的左/底部开始。

返回:
Axes 或 None

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

is_saving()[源代码][源代码]#

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

manager_class[源代码]#

FigureManagerBase 的别名

mpl_connect(s, func)[源代码][源代码]#

将函数 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'

  • '关闭事件'.

函数可调用

要执行的回调函数,该函数必须具有以下签名:

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)[源代码][源代码]#

断开与ID为 cid 的回调的连接。

示例

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

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

注释

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

new_timer(interval=None, callbacks=None)[源代码][源代码]#

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

这对于通过后端的原生事件循环获取周期性事件非常有用。仅针对具有GUI的后端实现。

参数:
间隔整数

计时器间隔,单位为毫秒。

回调list[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)[源代码][源代码]#

渲染图形到硬拷贝。设置图形补丁的面部和边缘颜色。这是有用的,因为一些GUI的图形面部颜色背景是灰色的,你可能希望在硬拷贝中覆盖这一点。

参数:
文件名str 或 path-like 或 file-like

保存图像的文件。

dpi : float, 默认值: rcParams["savefig.dpi"] (default: 'figure')浮点数, 默认:

保存图像时的每英寸点数。

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

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

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

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

方向{'landscape', 'portrait'}, 默认: 'portrait'

仅当前适用于PostScript打印。

格式str, 可选

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

bbox_inches : 'tight' 或 Bbox, 默认值: rcParams["savefig.bbox"] (default: None)'紧密' 或者

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

pad_inches : float 或 'layout', 默认值: rcParams["savefig.pad_inches"] (default: 0.1)浮点数或'布局', 默认:

当 bbox_inches 为 'tight' 时,图表周围的填充量(以英寸为单位)。如果使用 'layout',则使用受限或压缩布局引擎的填充;如果未使用这些引擎之一,则忽略此设置。

bbox_extra_artists : Artist 的列表, 可选列表

在计算紧密边界框时将考虑的额外艺术家的列表。

后端str, 可选

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

release_mouse(ax)[源代码][源代码]#

释放由 Axes ax 持有的鼠标抓取。

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

required_interactive_framework = None#
property scroll_pick_id#

!! 由 numpydoc 处理 !!

set_cursor(cursor)[源代码][源代码]#

设置当前光标。

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

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

参数:
cursor游标

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

start_event_loop(timeout=0)[源代码][源代码]#

启动一个阻塞的事件循环。

这样的事件循环被交互式函数使用,例如 ginputwaitforbuttonpress,用于等待事件。

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

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

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

交互式后端应以更原生的方式实现这一点。

stop_event_loop()[源代码][源代码]#

停止当前的阻塞事件循环。

交互式后端需要重新实现这一点以匹配 start_event_loop

supports_blit = False#
switch_backends(FigureCanvasClass)[源代码][源代码]#

[已弃用] 实例化一个 FigureCanvasClass 的实例

这用于后端切换,例如,从 FigureCanvasGTK 实例化一个 FigureCanvasPS。注意,不会进行深度复制,因此对其中一个实例的任何更改(例如,设置图形大小或线条属性),都会反映在另一个实例中。

注释

自 3.8 版本弃用.

class matplotlib.backend_bases.FigureManagerBase(canvas, num)[源代码][源代码]#

基类:object

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

图表管理器被 pyplot 用于以与后端无关的方式与窗口交互。它是代表屏幕上图表的实际(GUI)框架的适配器。

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

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

以下基本操作是可访问的:

窗口操作

按键和鼠标按钮按下处理

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

其他操作

子类将具有额外的属性和函数来访问额外的功能。这当然是特定于后端的。例如,大多数 GUI 后端都有 windowtoolbar 属性,这些属性提供了对各自框架原生 GUI 小部件的访问。

属性:
画布 : FigureCanvasBaseFigureCanvasBase

特定于后端的画布实例。

numint 或 str

图号。

key_press_handler_id整数

默认的按键处理程序 cid,在使用 toolmanager 时。要禁用默认的按键处理,请使用:

figure.canvas.mpl_disconnect(
    figure.canvas.manager.key_press_handler_id)
button_press_handler_id整数

在使用 toolmanager 时的默认鼠标按钮处理程序 cid。要禁用默认按钮按下处理,请使用:

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

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

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

destroy()[源代码][源代码]#
full_screen_toggle()[源代码][源代码]#
get_window_title()[源代码][源代码]#

返回包含该图形的窗口的标题文本,如果没有窗口(例如,PS 后端),则返回 None。

classmethod pyplot_show(*, block=None)[源代码][源代码]#

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

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

参数:
bool, 可选

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

resize(w, h)[源代码][源代码]#

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

set_window_title(title)[源代码][源代码]#

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

对于非GUI(例如,PS)后端,这没有效果。

示例

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

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

classmethod start_main_loop()[源代码][源代码]#

启动主事件循环。

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

class matplotlib.backend_bases.GraphicsContextBase[源代码][源代码]#

基类:object

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

copy_properties(gc)[源代码][源代码]#

gc 复制属性到 self。

get_alpha()[源代码][源代码]#

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

get_antialiased()[源代码][源代码]#

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

get_capstyle()[源代码][源代码]#

返回 CapStyle

get_clip_path()[源代码][源代码]#

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

get_clip_rectangle()[源代码][源代码]#

将剪辑矩形作为 Bbox 实例返回。

get_dashes()[源代码][源代码]#

返回作为 (偏移量, 虚线列表) 对的虚线样式。

详情请参见 set_dashes

默认值是 (None, None)。

get_forced_alpha()[源代码][源代码]#

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

get_gid()[源代码][源代码]#

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

get_hatch()[源代码][源代码]#

获取当前的填充样式。

get_hatch_color()[源代码][源代码]#

获取舱口颜色。

get_hatch_linewidth()[源代码][源代码]#

获取填充线的线宽。

get_hatch_path(density=6.0)[源代码][源代码]#

返回当前hatch的`.Path`。

get_joinstyle()[源代码][源代码]#

返回 JoinStyle

get_linewidth()[源代码][源代码]#

返回线的宽度,单位为点。

get_rgb()[源代码][源代码]#

返回一个由三个或四个介于0到1之间的浮点数组成的元组。

get_sketch_params()[源代码][源代码]#

返回艺术家的草图参数。

返回:
元组或 None

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

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

  • length: 沿着线条的摆动长度。

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

如果没有设置草图参数,则可能返回 None

get_snap()[源代码][源代码]#

返回快照设置,可以是:

  • True: 将顶点对齐到最近的像素中心

  • False: 保持顶点不变

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

get_url()[源代码][源代码]#

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

restore()[源代码][源代码]#

从堆栈中恢复图形上下文 - 仅对在堆栈上保存图形上下文的渲染器需要。

set_alpha(alpha)[源代码][源代码]#

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

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

set_antialiased(b)[源代码][源代码]#

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

set_capstyle(cs)[源代码][源代码]#

设置如何绘制线条的端点。

参数:
cs : CapStyle 或 {'butt', 'projecting', 'round'}CapStyle 或 {'butt', 'projecting', 'round'}
set_clip_path(path)[源代码][源代码]#

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

set_clip_rectangle(rectangle)[源代码][源代码]#

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

set_dashes(dash_offset, dash_list)[源代码][源代码]#

设置 gc 的虚线样式。

参数:
dash_offset浮动

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

dash_list类似数组或 None

开关序列作为点。None 指定一条实线。所有其他值必须为非负值(\(\ge 0\))。

注释

更多信息请参见 PostScript 语言参考 的第666页。

set_foreground(fg, isRGBA=False)[源代码][源代码]#

设置前景色。

参数:
fg颜色
isRGBA布尔

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

set_gid(id)[源代码][源代码]#

设置 id。

set_hatch(hatch)[源代码][源代码]#

设置填充的阴影样式。

set_hatch_color(hatch_color)[源代码][源代码]#

设置阴影颜色。

set_joinstyle(js)[源代码][源代码]#

设置如何绘制线段之间的连接。

参数:
js : JoinStyle 或 {'miter', 'round', 'bevel'}JoinStyle 或 {'miter', 'round', 'bevel'}
set_linewidth(w)[源代码][源代码]#

设置线宽,单位为点。

set_sketch_params(scale=None, length=None, randomness=None)[源代码][源代码]#

设置草图参数。

参数:
比例浮点数, 可选

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

长度float, 默认值: 128

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

随机性float, 默认值: 16

长度被缩小或扩大的比例因子。

set_snap(snap)[源代码][源代码]#

设置快照设置,可能包括:

  • True: 将顶点对齐到最近的像素中心

  • False: 保持顶点不变

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

set_url(url)[源代码][源代码]#

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

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

基类:LocationEvent

一个关键事件(按键按下、按键释放)。

除了由父类 EventLocationEvent 定义的属性外,KeyEvent 还有许多特殊属性。

属性:
关键None 或 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)[源代码][源代码]#

基类:Event

具有屏幕位置的事件。

LocationEvent 除了继承自父类 Event 的属性外,还有一些特殊属性。

属性:
x, y整数或无

事件位置从画布左下角的像素开始计算。

inaxes : Axes 或 None轴或无

鼠标所在的 Axes 实例(如果有的话)。

xdata, ydata浮点数或无

鼠标在 inaxes 内的数据坐标,如果鼠标不在 Axes 上则为 None

修饰符frozenset

当前被按下的键盘修饰键(不包括 KeyEvent)。

class matplotlib.backend_bases.MouseButton(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[源代码][源代码]#

基类:IntEnum

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

基类:LocationEvent

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

除了由父类 EventLocationEvent 定义的属性外,MouseEvent 还有许多特殊属性。

属性:
按钮 : None 或 MouseButton 或 {'up', 'down'}无或

按钮被按下。'up' 和 'down' 用于滚动事件。

请注意,LEFT 和 RIGHT 实际上指的是“主要”和“次要”按钮,即如果用户反转了他们的左右按钮(“左撇子设置”),那么 LEFT 按钮将是物理上位于右侧的那个。

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

关键None 或 str

鼠标事件触发时按下的键,例如 'shift'。参见 KeyEvent

警告

当前键值是从画布内发生的最后一个 'key_press_event' 或 'key_release_event' 中获取的。因此,如果键盘状态的最后一次变化发生在画布没有焦点时,此属性将是错误的。另一方面,modifiers 属性应该始终是正确的,但它只能报告修饰键。

步骤浮动

滚动步数(向上为正,向下为负)。这仅适用于'scroll_event',否则默认为0。

双击布尔

事件是否为双击。这仅适用于 '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)[源代码][源代码]#

基类: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”子目录中的标准图标。

就这样,剩下的交给我们!

back(*args)[源代码][源代码]#

向上移动视图限制堆栈。

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

configure_subplots(*args)[源代码][源代码]#
drag_pan(event)[源代码][源代码]#

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

drag_zoom(event)[源代码][源代码]#

缩放模式下的拖动回调。

draw_rubberband(event, x0, y0, x1, y1)[源代码][源代码]#

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

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

forward(*args)[源代码][源代码]#

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

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

home(*args)[源代码][源代码]#

恢复原始视图。

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

mouse_move(event)[源代码][源代码]#
pan(*args)[源代码][源代码]#

切换平移/缩放工具。

用左键平移,用右键缩放。

press_pan(event)[源代码][源代码]#

平移/缩放模式下鼠标按钮按下的回调函数。

press_zoom(event)[源代码][源代码]#

在缩放到矩形模式下,鼠标按钮按下的回调。

push_current()[源代码][源代码]#

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

release_pan(event)[源代码][源代码]#

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

release_zoom(event)[源代码][源代码]#

在缩放到矩形模式下,鼠标按钮释放的回调。

remove_rubberband()[源代码][源代码]#

移除橡皮筋。

save_figure(*args)[源代码][源代码]#

保存当前图形。

set_history_buttons()[源代码][源代码]#

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

set_message(s)[源代码][源代码]#

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

toolitems = (('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous view', 'back', 'back'), ('Forward', 'Forward to next view', 'forward', 'forward'), (None, None, None, None), ('Pan', 'Left button pans, Right button zooms\nx/y fixes axis, CTRL fixes aspect', 'move', 'pan'), ('Zoom', 'Zoom to rectangle\nx/y fixes axis', 'zoom_to_rect', 'zoom'), ('Subplots', 'Configure subplots', 'subplots', 'configure_subplots'), (None, None, None, None), ('Save', 'Save the figure', 'filesave', 'save_figure'))#
update()[源代码][源代码]#

重置 Axes 堆栈。

zoom(*args)[源代码][源代码]#
exception matplotlib.backend_bases.NonGuiException[源代码][源代码]#

基类:Exception

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

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

基类:Event

一个拾取事件。

当用户在画布上选择了一个位置,该位置足够接近一个已被 Artist.set_picker 设置为可选的艺术家时,会触发此事件。

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

属性:
mouseevent鼠标事件

生成的拾取的鼠标事件。

艺术家 : Artist艺术家

选中的艺术家。注意,艺术家默认是不可选择的(参见 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[源代码][源代码]#

基类:object

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

以下方法必须在后端实现以实现完整功能(尽管仅实现 draw_path 本身就能提供一个功能非常强大的后端):

以下方法 应该 在后台实现,以优化原因:

close_group(s)[源代码][源代码]#

用标签 s 关闭一个分组元素。

仅由SVG渲染器使用。

draw_gouraud_triangles(gc, triangles_array, colors_array, transform)[源代码][源代码]#

绘制一系列 Gouraud 三角形。

参数:
gcGraphicsContextBase

图形上下文。

三角形数组(N, 3, 2) 类似数组

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

颜色数组(N, 3, 4) 数组类

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

变换 : Transform变换

应用于点的仿射变换。

draw_image(gc, x, y, im, transform=None)[源代码][源代码]#

绘制一个RGBA图像。

参数:
gcGraphicsContextBase

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

x标量

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

y标量

画布底部边缘的物理单位(即点或像素)距离。

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

一个包含RGBA像素的数组。

变换 : Affine2DBaseAffine2DBase

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

draw_markers(gc, marker_path, marker_trans, path, trans, rgbFace=None)[源代码][源代码]#

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

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

参数:
gcGraphicsContextBase

图形上下文。

marker_path路径

标记的路径。

marker_trans变换

应用于标记的仿射变换。

路径 : Path路径

绘制标记的位置。

trans变换

应用于路径的仿射变换。

rgbFace : color, 可选颜色,可选
draw_path(gc, path, transform, rgbFace=None)[源代码][源代码]#

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

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

绘制一系列 路径

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

facecolors, edgecolors, linewidths, linestyles, 和 antialiased 是设置相应属性的列表。

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)[源代码][源代码]#

绘制一个四边形网格。

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

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

绘制一个 TeX 实例。

参数:
gcGraphicsContextBase

图形上下文。

x浮动

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

y浮动

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

sstr

TeX 文本字符串。

propFontProperties

字体属性。

角度浮动

逆时针方向的旋转角度(以度为单位)。

mtext文本

要渲染的原始文本对象。

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

绘制一个文本实例。

参数:
gcGraphicsContextBase

图形上下文。

x浮动

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

y浮动

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

sstr

文本字符串。

propFontProperties

字体属性。

角度浮动

逆时针方向的旋转角度(以度为单位)。

ismath布尔值或“TeX”

如果为真,使用 mathtext 解析器。

mtext文本

要渲染的原始文本对象。

注释

后端实现者须知:

RendererBase.draw_text 还支持将 "TeX" 传递给 ismath 参数以使用 TeX 渲染,但这对于实际的渲染后端不是必需的,实际上许多内置后端并不支持这一点。相反,TeX 渲染由 draw_tex 提供。

flipy()[源代码][源代码]#

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

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

get_canvas_width_height()[源代码][源代码]#

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

get_image_magnification()[源代码][源代码]#

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

get_texmanager()[源代码][源代码]#

返回 TexManager 实例。

get_text_width_height_descent(s, prop, ismath)[源代码][源代码]#

获取字符串 s 在显示坐标中的宽度、高度和下降量(从底部到基线的偏移量),使用 FontProperties prop

s 的开头和结尾处的空白字符也会被计算在报告的宽度内。

new_gc()[源代码][源代码]#

返回一个 GraphicsContextBase 的实例。

open_group(s, gid=None)[源代码][源代码]#

使用标签 s*gid*(如果设置)作为 id 打开一个分组元素。

仅由SVG渲染器使用。

option_image_nocomposite()[源代码][源代码]#

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

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

option_scale_image()[源代码][源代码]#

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

points_to_pixels(points)[源代码][源代码]#

将点转换为显示单位。

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

points to pixels = points * pixels_per_inch/72 * dpi/72
参数:
浮点数或类似数组的对象
返回:
点转换为像素
start_filter()[源代码][源代码]#

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

目前仅由 agg 渲染器支持。

start_rasterizing()[源代码][源代码]#

切换到栅格渲染器。

MixedModeRenderer 使用。

stop_filter(filter_func)[源代码][源代码]#

切换回原始渲染器。临时渲染器的内容通过 filter_func 处理,并以图像形式绘制在原始渲染器上。

目前仅由 agg 渲染器支持。

stop_rasterizing()[源代码][源代码]#

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

MixedModeRenderer 使用。

class matplotlib.backend_bases.ResizeEvent(name, canvas)[源代码][源代码]#

基类:Event

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

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

属性:
宽度整数

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

高度整数

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

class matplotlib.backend_bases.ShowBase[源代码][源代码]#

基类:_Backend

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

子类必须重写 mainloop() 方法。

class matplotlib.backend_bases.TimerBase(interval=None, callbacks=None)[源代码][源代码]#

基类:object

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

子类必须重写以下方法:

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

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

子类可以额外重写以下方法:

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

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

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

参数:
间隔int, 默认值: 1000ms

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

回调list[tuple[callable, tuple, dict]]

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

add_callback(func, *args, **kwargs)[源代码][源代码]#

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

此函数返回 func,这使得它可以作为装饰器使用。

property interval#

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

remove_callback(func, *args, **kwargs)[源代码][源代码]#

从回调列表中移除 func

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

property single_shot#

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

start(interval=<deprecated parameter>)[源代码][源代码]#

启动计时器对象。

参数:
间隔int, 可选

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

stop()[源代码][源代码]#

停止计时器。

class matplotlib.backend_bases.ToolContainerBase(toolmanager)[源代码][源代码]#

基类:object

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

属性:
toolmanager工具管理器

这个 ToolContainer 想要与之通信的工具。

add_tool(tool, group, position=-1)[源代码][源代码]#

向此容器添加一个工具。

参数:
工具工具_like

添加工具的方法,参见 ToolManager.get_tool

str

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

位置int, 默认值: -1

在此组中放置此工具的位置。

add_toolitem(name, group, position, image, description, toggle)[源代码][源代码]#

一个用于向容器添加工具项的钩子。

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

警告

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

与按钮点击事件关联的回调函数必须 完全self.trigger_tool(name)

参数:
名称str

要添加的工具名称,这将被用作工具的ID以及按钮的默认标签。

str

此工具所属的组名。

位置整数

工具在其组中的位置,如果为 -1 则放在最后。

图像str

按钮图像的文件名或 None

描述str

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

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

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

remove_toolitem(name)[源代码][源代码]#

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

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

因为某些工具仅存在于 ToolManager 中,而不存在于 ToolContainer 中,所以当调用容器中不存在的工具时,此方法必须为无操作。

警告

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

参数:
名称str

要删除的工具名称。

set_message(s)[源代码][源代码]#

在工具栏上显示一条消息。

参数:
sstr

消息文本。

toggle_toolitem(name, toggled)[源代码][源代码]#

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

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

警告

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

参数:
名称str

要切换的工具的ID。

切换布尔

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

trigger_tool(name)[源代码][源代码]#

触发工具。

参数:
名称str

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

matplotlib.backend_bases.button_press_handler(event, canvas=None, toolbar=None)[源代码][源代码]#

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

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

matplotlib.backend_bases.get_registered_canvas_class(format)[源代码][源代码]#

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

matplotlib.backend_bases.key_press_handler(event, canvas=None, toolbar=None)[源代码][源代码]#

在画布和工具栏上实现 Matplotlib 的默认键绑定,详见 键事件处理

参数:
事件 : 按键事件KeyEvent

按键按下/释放事件。

画布 : FigureCanvasBase, 默认: event.canvasFigureCanvasBase,默认值:event.canvas

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

工具栏 : NavigationToolbar2, 默认: event.canvas.toolbarNavigationToolbar2,默认值:event.canvas.toolbar

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

matplotlib.backend_bases.register_backend(format, backend, description=None)[源代码][源代码]#

为保存到指定文件格式注册一个后端。

参数:
格式str

文件扩展名

后端模块字符串或画布类

用于处理文件输出的后端

描述str, 默认值: ""

文件类型的描述。