backend_template#

一个功能齐全、无所事事的后端,旨在作为后端编写者的模板。它功能齐全,您可以选择它作为后端,例如

import matplotlib
matplotlib.use("template")

并且您的程序将(应该!)运行而不会出错,尽管不会产生任何输出。这为后端编写者提供了一个起点;您可以有选择地实现绘图方法(draw_pathdraw_image等)并慢慢看到您的图形变得栩栩如生,而不是在获得任何结果之前必须有一个完整的实现。

将此文件复制到 Matplotlib 源代码树之外的目录中,Python 可以在其中导入它(通过将目录添加到您的目录sys.path或将其打包为普通 Python 包);如果后端是可导入的, 那么您可以使用import my.backend

import matplotlib
matplotlib.use("module://my.backend")

如果您的后端实现了对保存数字的支持(即有一个print_xyz 方法),您可以将其注册为给定文件类型的默认处理程序:

from matplotlib.backend_bases import register_backend
register_backend('xyz', 'my_backend', 'XYZ File Format')
...
plt.savefig("figure.xyz")
matplotlib.backends.backend_template。FigureCanvas [来源] #

的别名FigureCanvasTemplate

matplotlib.backends.backend_template。FigureCanvasTemplate ( figure = None ) [source] #

基地:FigureCanvasBase

图形渲染到的画布。调用 draw 和 print fig 方法,创建渲染器等。

注意:GUI 模板需要将按钮按下、鼠标移动和按键按下的事件连接到调用基类方法 button_press_event、button_release_event、motion_notify_event、key_press_event 和 key_release_event 的函数。有关示例,请参阅交互式后端的实现。

属性
数字matplotlib.figure.Figure

高级 Figure 实例

绘制( ) [来源] #

使用渲染器绘制图形。

重要的是,即使未生成输出,此方法实际上也会遍历艺术家树,因为这将触发用户在保存到磁盘之前可能希望访问的延迟工作(如计算限制自动限制和刻度值)。

filetypes = {'eps': 'Encapsulated Postscript', 'foo': 'My magic Foo format', 'jpeg': '联合摄影专家组', 'jpg': '联合摄影专家组', 'pdf': ' Portable Document Format', 'pgf': 'PGF code for LaTeX', 'png': 'Portable Network Graphics', 'ps': 'Postscript', 'raw': '原始RGBA位图', 'rgba': '原始RGBA位图', 'svg': '可缩放 矢量 图形', 'svgz': '可缩放 矢量 图形', 'tif': '标记 图像 文件 格式', 'tiff': '标记 图像 文件 格式', 'webp': 'WebP 图像 格式'} #
get_default_filetype ( ) [来源] #

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

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

manager_class [来源] #

的别名FigureManagerTemplate

print_foo (文件名, * args , ** kwargs ) [来源] #

写出格式 foo.

此方法通常通过Figure.savefigand 调用FigureCanvasBase.print_figure,它负责将图形 facecolor、edgecolor 和 dpi 设置为所需的输出值,并将它们恢复为原始值。因此,print_foo不需要处理这些设置。

matplotlib.backends.backend_template。FigureManager [来源] #

的别名FigureManagerTemplate

matplotlib.backends.backend_template。FigureManagerTemplate ( canvas , num ) [source] #

基地:FigureManagerBase

pyplot 模式的助手类,将所有内容打包成一个整洁的包。

对于非交互式后端,基类就足够了。

matplotlib.backends.backend_template。GraphicsContextTemplate [来源] #

基地:GraphicsContextBase

图形上下文提供颜色、线条样式等。有关将图形上下文属性(帽样式、连接样式、线宽、颜色)映射到特定后端的示例,请参见 cairo 和 postscript 后端。在 cairo 中,这是通过包装 cairo.Context 对象并使用字典映射样式到 gdk 常量将适当的调用转发给它来完成的。在 Postscript 中,所有工作都由渲染器完成,将线条样式映射到 postscript 调用。

如果在渲染器级别(如在 postscript 后端)进行映射更合适,则不需要覆盖任何 GC 方法。如果包装一个实例(如在 cairo 后端)并在此处进行映射更合适,则需要覆盖几个 setter 方法。

基础 GraphicsContext 将颜色存储为单位间隔上的 RGB 元组,例如 (0.5, 0.0, 1.0)。您可能需要将其映射到适合您的后端的颜色。

matplotlib.backends.backend_template。RendererTemplate ( dpi ) [来源] #

基地:RendererBase

渲染器处理绘图/渲染操作。

这是一个最小的无所事事类,可用于在编写新后端时开始使用。backend_bases.RendererBase有关方法的文档,请参阅。

draw_image ( gc , x , y , im ) [来源] #

绘制 RGBA 图像。

参数
GCGraphicsContextBase

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

x标量

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

y标量

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

im (N, M, 4) 类似于 np.uint8 的数组

一组 RGBA 像素。

转换matplotlib.transforms.Affine2DBase

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

draw_path ( gc , path , transform , rgbFace = None ) [source] #

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

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

绘制一个文本实例。

参数
GCGraphicsContextBase

图形上下文。

x浮动

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

y浮动

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

字符串_

文本字符串。

支柱matplotlib.font_manager.FontProperties

字体属性。

角度浮动

以度为单位的逆时针旋转角度。

多行文字matplotlib.text.Text

要渲染的原始文本对象。

笔记

后端实施者的注意事项:

当您尝试确定您的边界框是否正确(这使文本布局/对齐能够正常工作)时,它有助于更​​改 text.py 中的行:

if 0: bbox_artist(self, renderer)

到 if 1,然后实际的边界框将与您的文本一起绘制。

Flipy ( ) [来源] #

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

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

get_canvas_width_height ( ) [来源] #

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

get_text_width_height_descent ( s , prop , ismath ) [来源] #

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

new_gc ( ) [来源] #

返回 a 的一个实例GraphicsContextBase

points_to_pixels () [来源] #

将点转换为显示单位。

您需要覆盖此函数(除非您的后端没有 dpi,例如 postscript 或 svg)。一些成像系统假定每英寸像素有一些值:

points to pixels = points * pixels_per_inch/72 * dpi/72
参数
浮点数或类似数组

一个浮点数或一个 numpy 浮点数数组

返回
点转换为像素
matplotlib.backends.backend_template。显示( * , block = None ) [来源] #

对于图像后端 - 不是必需的。对于 GUI 后端 - show() 通常是 pyplot 脚本的最后一行,它告诉后端是时候绘制了。在交互模式下,这应该什么都不做。