matplotlib.backend_bases
#
抽象基类定义了渲染器和图形上下文必须实现的图元,以用作 Matplotlib 后端。
RendererBase
处理绘图/渲染操作的抽象基类。
FigureCanvasBase
将
Figure
与后端特定细节(如用户界面绘图区域)分离的抽象层。GraphicsContextBase
提供颜色、线条样式等的抽象基类。
Event
所有 Matplotlib 事件处理的基类。派生类如
KeyEvent
和MouseEvent
存储元数据,如按下的键和按钮,以及像素和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.draw
和canvas.blit
对于所有后端可能不安全,并可能导致无限递归。除了父
Event
类定义的属性外,DrawEvent 还具有许多特殊属性。- 属性:
- renderer
RendererBase
绘图事件的渲染器。
- renderer
- class matplotlib.backend_bases.Event(name, canvas, guiEvent=None)[source]#
基类:
object
Matplotlib 事件。
定义了以下属性并显示其默认值。子类可以定义其他属性。
- 属性:
- namestr
事件名称。
- canvas
FigureCanvasBase
生成事件的后端特定画布实例。
- guiEvent
触发 Matplotlib 事件的 GUI 事件。
- class matplotlib.backend_bases.FigureCanvasBase(figure=None)[source]#
基类:
object
图形渲染到的画布。
- 属性:
- figure
Figure
高级图形实例。
- figure
- 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#
- classmethod get_default_filetype()[source]#
返回
rcParams["savefig.format"]
(默认:'png'
) 中指定的默认 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
图形的大小,以点或像素为单位,具体取决于后端。
- inaxes(xy)[source]#
返回包含点 xy 的最顶层可见
Axes
。- 参数:
- xy(float, float)
画布左/下方的 (x, y) 像素位置。
- 返回:
Axes
or None包含该点的最顶层可见 Axes,如果该点没有 Axes,则为 None。
- 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
,此外,变量xdata
和ydata
属性将被设置为数据坐标中的鼠标位置。有关更多信息,请参阅KeyEvent
和MouseEvent
。注意
如果 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 执行。返回
False
或0
的回调将从计时器中移除。
示例
>>> 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://...”。
- required_interactive_framework = None#
- property scroll_pick_id#
- set_cursor(cursor)[source]#
设置当前光标。
如果后端不显示任何内容,这可能无效。
如果后端需要,此方法应在设置光标后触发后端事件循环中的更新,因为此方法可能在长时间运行的任务之前调用,在此期间 GUI 不会更新。
- 参数:
- cursor
Cursors
要在画布上显示的光标。注意:某些后端可能会更改整个窗口的光标。
- cursor
- start_event_loop(timeout=0)[source]#
启动阻塞事件循环。
此类事件循环由交互式函数使用,例如
ginput
和waitforbuttonpress
,用于等待事件。事件循环会一直阻塞,直到回调函数触发
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 后端都具有
window
和toolbar
属性,可以访问相应框架的原生 GUI 小部件。- 属性:
- canvas
FigureCanvasBase
后端特定的画布实例。
- 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)
- canvas
- classmethod create_with_canvas(canvas_class, figure, num)[source]#
使用特定的 *canvas_class* 为给定 *figure* 创建一个管理器。
如果后端在设置画布或管理器方面有特殊需求,应重写此方法。
- classmethod pyplot_show(*, block=None)[source]#
显示所有图形。此方法是
pyplot.show
的实现。要自定义
pyplot.show
的行为,交互式后端通常应重写start_main_loop
;如果需要更定制化的逻辑,pyplot_show
也可以被重写。- 参数:
- block布尔值, 可选
是否通过调用
start_main_loop
进行阻塞。默认值为 None,这意味着如果既不在 IPython 的%pylab
模式下,也不在interactive
模式下,则进行阻塞。
- 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
提供颜色、线条样式等的抽象基类。
- get_clip_path()[source]#
返回剪裁路径,形式为 (path, transform),其中 path 是一个
Path
实例,transform 是在剪裁之前应用于路径的仿射变换。
- get_dashes()[source]#
以 (offset, dash-list) 对的形式返回虚线样式。
有关详细信息,请参阅
set_dashes
。默认值为 (None, None)。
- set_alpha(alpha)[source]#
设置用于混合的alpha值 - 不支持所有后端。
如果
alpha=None
(默认值),则前景和填充颜色的 alpha 分量将用于设置各自的透明度(如果适用);否则,alpha
将覆盖它们。
- set_clip_path(path)[source]#
将剪裁路径设置为
TransformedPath
或 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_sketch_params(scale=None, length=None, randomness=None)[source]#
设置草图参数。
- 参数:
- scale浮点数,可选
摆动垂直于源线的幅度,以像素为单位。如果 scale 为
None
或未提供,则不提供草图滤镜。- length浮点数,默认值:128
沿线的摆动长度,以像素为单位。
- randomness浮点数,默认值:16
长度收缩或扩展的比例因子。
- class matplotlib.backend_bases.KeyEvent(name, canvas, key, x=0, y=0, guiEvent=None)[source]#
-
键盘事件(按键按下、按键释放)。
除了父类
Event
和LocationEvent
定义的属性外,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 还有一些特殊属性。
- class matplotlib.backend_bases.MouseEvent(name, canvas, x, y, button=None, key=None, step=0, dblclick=False, guiEvent=None, *, buttons=None, modifiers=None)[source]#
-
鼠标事件('button_press_event'、'button_release_event'、'scroll_event'、'motion_notify_event')。
除了父类
Event
和LocationEvent
定义的属性外,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”。
- buttonNone 或
示例
def on_press(event): print('you pressed', event.button, event.xdata, event.ydata) cid = fig.canvas.mpl_connect('button_press_event', on_press)
基类:
object
导航光标的基类,版本 2。
后端必须实现一个画布,用于处理“button_press_event”和“button_release_event”的连接。有关详细信息,请参阅
FigureCanvasBase.mpl_connect()
。它们还必须定义
save_figure()
保存当前图形。
draw_rubberband()
(可选)绘制缩放矩形“橡皮筋”矩形。
set_message()
(可选)显示消息。
set_history_buttons()
(可选)您可以更改历史记录后退/前进按钮以指示禁用/启用状态。
并重写
__init__
来设置工具栏——不要忘记调用基类初始化方法。通常,__init__
需要设置连接到home
、back
、forward
、pan
、zoom
和save_figure
方法的工具栏按钮,并使用数据路径的“images”子目录中的标准图标。就这样,剩下的我们来完成!
在视图限制堆栈中向后移动。
为了方便直接作为 GUI 回调连接,GUI 回调通常会传递额外的参数,此方法接受任意参数,但不会使用它们。
平移/缩放模式下拖动时的回调。
缩放模式下拖动时的回调。
绘制一个矩形橡皮筋以指示缩放限制。
请注意,不保证
x0 <= x1
和y0 <= y1
。
在视图限制堆栈中向前移动。
为了方便直接作为 GUI 回调连接,GUI 回调通常会传递额外的参数,此方法接受任意参数,但不会使用它们。
恢复原始视图。
为了方便直接作为 GUI 回调连接,GUI 回调通常会传递额外的参数,此方法接受任意参数,但不会使用它们。
切换平移/缩放工具。
左键平移,右键缩放。
平移/缩放模式下鼠标按键按下的回调。
矩形缩放模式下鼠标按键按下的回调。
将当前视图限制和位置压入堆栈。
平移/缩放模式下鼠标按键释放的回调。
矩形缩放模式下鼠标按键释放的回调。
移除橡皮筋。
保存当前图形。
后端实现可以选择返回已保存文件的绝对路径(如果有的话),作为字符串。
如果未创建文件,则返回
None
。如果后端未实现此功能,则返回
NavigationToolbar2.UNKNOWN_SAVED_STATUS
。- 返回:
- str 或
NavigationToolbar2.UNKNOWN_SAVED_STATUS
或None
已保存图形的文件路径。如果图形未保存,则返回
None
。当后端不提供信息时,返回NavigationToolbar2.UNKNOWN_SAVED_STATUS
。
- str 或
启用或禁用后退/前进按钮。
在工具栏或状态栏显示消息。
重置坐标轴堆栈。
- class matplotlib.backend_bases.PickEvent(name, canvas, mouseevent, artist, guiEvent=None, **kwargs)[source]#
由图形关闭触发的事件。
拾取事件。
当用户在画布上拾取一个与已通过
Artist.set_picker
设置为可拾取的艺术家足够接近的位置时,此事件将被触发。除了父类
Event
定义的属性外,PickEvent 还有一些特殊属性。- 属性:
- mouseevent
MouseEvent
生成拾取事件的鼠标事件。
- artist
Artist
被拾取的艺术家。请注意,艺术家默认不可拾取(请参阅
Artist.set_picker
)。- 其他
根据拾取对象的类型,可能会有额外的属性;例如,
Line2D
拾取可能定义与PatchCollection
拾取不同的额外属性。
- mouseevent
示例
将函数
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
就可以提供一个功能强大的后端)出于优化原因,后端*应该*实现以下方法
- draw_gouraud_triangles(gc, triangles_array, colors_array, transform)[source]#
绘制一系列 Gouraud 三角形。
- 参数:
- gc
GraphicsContextBase
图形上下文。
- triangles_array(N, 3, 2) 类数组
N个三角形的 (x, y) 点数组。
- colors_array(N, 3, 4) 类数组
N个三角形每个点的 RGBA 颜色数组。
- transform
Transform
应用于点的仿射变换。
- gc
- draw_image(gc, x, y, im, transform=None)[source]#
绘制 RGBA 图像。
- 参数:
- gc
GraphicsContextBase
带有裁剪信息的图形上下文。
- x浮点数
从画布左侧开始的物理单位(即点或像素)距离。
- y浮点数
从画布底部开始的物理单位(即点或像素)距离。
- im(N, M, 4)
numpy.uint8
数组 RGBA 像素数组。
- transform
Affine2DBase
当且仅当具体后端编写为
option_scale_image
返回True
时,仿射变换(即Affine2DBase
)*可能*被传递给draw_image
。变换的平移向量以物理单位(即点或像素)给出。请注意,此变换不会覆盖 *x* 和 *y*,并且必须在通过 *x* 和 *y* 平移结果*之前*应用(这可以通过将 *x* 和 *y* 添加到由 *transform* 定义的平移向量来实现)。
- gc
- draw_markers(gc, marker_path, marker_trans, path, trans, rgbFace=None)[source]#
在 path 的每个顶点(不包括控制点)绘制一个标记。
基本(回退)实现会多次调用
draw_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 变换。
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)[source]#
绘制一个四边形网格(quadmesh)。
基本(回退)实现将四边形网格转换为路径,然后调用
draw_path_collection
。
- draw_tex(gc, x, y, s, prop, angle, *, mtext=None)[source]#
绘制一个 TeX 实例。
- 参数:
- gc
GraphicsContextBase
图形上下文。
- x浮点数
文本在显示坐标中的 x 位置。
- y浮点数
文本基线在显示坐标中的 y 位置。
- sstr
TeX 文本字符串。
- prop
FontProperties
字体属性。
- angle浮点数
逆时针旋转角度(度)。
- mtext
Text
要渲染的原始文本对象。
- gc
- draw_text(gc, x, y, s, prop, angle, ismath=False, mtext=None)[source]#
绘制文本实例。
- 参数:
- gc
GraphicsContextBase
图形上下文。
- x浮点数
文本在显示坐标中的 x 位置。
- y浮点数
文本基线在显示坐标中的 y 位置。
- sstr
文本字符串。
- prop
FontProperties
字体属性。
- angle浮点数
逆时针旋转角度(度)。
- ismath布尔值 或 "TeX"
如果为 True,则使用 mathtext 解析器。
- mtext
Text
要渲染的原始文本对象。
- gc
备注
后端实现者注意事项
RendererBase.draw_text
也支持将 "TeX" 传递给 ismath 参数以使用 TeX 渲染,但这对于实际的渲染后端来说不是必需的,事实上许多内置后端都不支持此功能。相反,TeX 渲染是由draw_tex
提供的。
- get_image_magnification()[source]#
获取传递给
draw_image
的图像的放大系数。允许后端图像以不同于其他艺术家的分辨率显示。
- get_texmanager()[source]#
返回
TexManager
实例。
- get_text_width_height_descent(s, prop, ismath)[source]#
获取字符串 s 在
FontProperties
prop 下的宽度、高度和下行距离(从底部到基线的偏移量),以显示坐标表示。字符串 s 开头和结尾的空白字符包含在报告的宽度中。
- new_gc()[source]#
返回一个
GraphicsContextBase
实例。
- 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_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_callback
和remove_callback
。
- add_callback(func, *args, **kwargs)[source]#
注册 func,以便在事件触发时由计时器调用。提供的任何额外参数都将传递给 func。
此函数返回 func,因此可以将其用作装饰器。
- property interval#
计时器事件之间的时间,单位为毫秒。
- remove_callback(func, *args, **kwargs)[source]#
从回调列表中移除 func。
args 和 kwargs 是可选的,用于区分注册为使用不同参数调用的同一函数的副本。此行为已弃用。将来,将不再考虑
*args, **kwargs
;要使特定回调本身可移除,请将其作为functools.partial
对象传递给add_callback
。
- property single_shot#
此计时器是否应在单次运行后停止。
- class matplotlib.backend_bases.ToolContainerBase(toolmanager)[source]#
基类:
object
所有工具容器的基类,例如工具栏。
- 属性:
- toolmanager
ToolManager
此
ToolContainer
想要与之通信的工具。
- toolmanager
- 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)
。
- remove_toolitem(name)[source]#
从容器中移除工具项的钩子。
此钩子必须在每个后端中实现,并包含从工具栏中移除元素的后端特定代码;当
ToolManager
发出tool_removed_event
时会调用它。由于某些工具仅存在于
ToolManager
而不存在于ToolContainer
上,因此当对容器中不存在的工具调用此方法时,它必须是空操作。警告
这是后端实现的一部分,不应由最终用户调用。他们应该改为调用
ToolManager.remove_tool
。- 参数:
- namestr
要移除的工具的名称。
- toggle_toolitem(name, toggled)[source]#
在不触发事件的情况下切换工具项的钩子。
此钩子必须在每个后端中实现,并包含静默切换工具栏元素的后端特定代码。
警告
这是后端实现的一部分,不应由最终用户调用。他们应该改为调用
ToolManager.trigger_tool
或ToolContainerBase.trigger_tool
(两者等效)。- 参数:
- namestr
要切换的工具的 ID。
- toggledbool
是否将此工具设置为已切换状态。
- matplotlib.backend_bases.button_press_handler(event, canvas=None, toolbar=None)[source]#
Matplotlib 对额外鼠标按钮的默认按钮操作。
参数与
key_press_handler
相同,但 event 是一个MouseEvent
。
- matplotlib.backend_bases.key_press_handler(event, canvas=None, toolbar=None)[source]#
实现在 导航键盘快捷键 中描述的画布和工具栏的默认 Matplotlib 键盘绑定。
- 参数:
- event
KeyEvent
按键按下/释放事件。
- canvas
FigureCanvasBase
, default:event.canvas
后端特定的画布实例。此参数是为了向后兼容而保留的,但如果设置,则应始终等于
event.canvas
。- toolbar
NavigationToolbar2
, default:event.canvas.toolbar
导航光标工具栏。此参数是为了向后兼容而保留的,但如果设置,则应始终等于
event.canvas.toolbar
。
- event