diff --git a/1.md b/1.md index e4139d9d57ec6a0a24ec2d524259173bfa126a82..b9cd46e1b2a9d7cbfc787780e79a204df2e94c6b 100644 --- a/1.md +++ b/1.md @@ -22,7 +22,7 @@ Matplotlib 的设计理念是,你应该能够使用几个,或者只有一个 没有找到适合我的包,我做了任何自称 Python 程序员会做的事情:撸起我的袖子开始自己造。我没有任何真正的计算机图形经验,决定模仿 MATLAB 的绘图功能,因为 MATLAB 做得很好。这有额外的优势,许多人有很多 MATLAB 的经验,因此,他们可以很快开始在 python 中绘图。从开发人员的角度来看,拥有固定的用户接口(pylab 接口)非常有用,因为代码库的内容可以重新设计,而不会影响用户代码。 -Matplotlib 代码在概念上分为三个部分:pylab 接口是由`matplotlib.pylab`提供的函数集,允许用户使用非常类似于 MATLAB 图生成代码([Pyplot 教程](http://matplotlib.org/users/pyplot_tutorial.html#pyplot-tutorial))的代码创建绘图。 Matplotlib 前端或 Matplotlib API 是一组重要的类,创建和管理图形,文本,线条,图表等([Artist 教程](http://matplotlib.org/users/artists.html#artist-tutorial))。这是一个对输出无所了解的抽象接口。后端是设备相关的绘图设备,也称为渲染器,将前端表示转换为打印件或显示设备(什么是后端?)。后端示例:PS 创建 [PostScript®](http://www.adobe.com/products/postscript/) 打印件,SVG 创建[可缩放矢量图形](http://www.w3.org/Graphics/SVG/)打印件,Agg 使用 Matplotlib 附带的高质量[反颗粒几何库](http://antigrain.com/)创建 PNG 输出,GTK 在 [Gtk+](https://www.gtk.org/) 应用程序中嵌入 Matplotlib,GTKAgg 使用反颗粒渲染器创建图形并将其嵌入到 Gtk+ 应用程序中,以及用于 [PDF](https://acrobat.adobe.com/us/en/why-adobe/about-adobe-pdf.html),[WxWidgets](https://www.wxpython.org/),[Tkinter](https://docs.python.org/library/tkinter.html) 等。 +Matplotlib 代码在概念上分为三个部分:pylab 接口是由`matplotlib.pylab`提供的函数集,允许用户使用非常类似于 MATLAB 图生成代码([Pyplot 教程](http://matplotlib.org/users/pyplot_tutorial.html#pyplot-tutorial))的代码创建绘图。 Matplotlib 前端或 Matplotlib API 是一组重要的类,创建和管理图形,文本,线条,图表等([艺术家教程](http://matplotlib.org/users/artists.html#artist-tutorial))。这是一个对输出无所了解的抽象接口。后端是设备相关的绘图设备,也称为渲染器,将前端表示转换为打印件或显示设备(什么是后端?)。后端示例:PS 创建 [PostScript®](http://www.adobe.com/products/postscript/) 打印件,SVG 创建[可缩放矢量图形](http://www.w3.org/Graphics/SVG/)打印件,Agg 使用 Matplotlib 附带的高质量[反颗粒几何库](http://antigrain.com/)创建 PNG 输出,GTK 在 [Gtk+](https://www.gtk.org/) 应用程序中嵌入 Matplotlib,GTKAgg 使用反颗粒渲染器创建图形并将其嵌入到 Gtk+ 应用程序中,以及用于 [PDF](https://acrobat.adobe.com/us/en/why-adobe/about-adobe-pdf.html),[WxWidgets](https://www.wxpython.org/),[Tkinter](https://docs.python.org/library/tkinter.html) 等。 Matplotlib 被很多人在许多不同的上下文中使用。有些人希望自动生成 PostScript 文件以发送给打印机或发布商。其他人在 Web 应用程序服务器上部署 Matplotlib 来生成 PNG 输出,并包含在动态生成的网页中。一些人在 Windows™ 上的 Tkinter 的 Python shell 中以交互方式使用 Matplotlib。我的主要用途是将 Matplotlib 嵌入 Windows,Linux 和 Macintosh OS X 上运行的 Gtk+ EEG 应用程序中。 diff --git a/3.5.md b/3.5.md index 4d5b4e9e01d27975e975ed841832eb99ac981cd4..d64625c0da05fafe46990d5646112dfed9242d1d 100644 --- a/3.5.md +++ b/3.5.md @@ -1,8 +1,8 @@ # 艺术家教程 -matplotlib API 有三个层级。 `matplotlib.backend_bases.FigureCanvas`是绘制图形的区域,`matplotlib.backend_bases.Renderer`是知道如何在`ChartCanvas`上绘制的对象,而`matplotlib.artist.Artist`是知道如何使用渲染器在画布上画图的对象。 `FigureCanvas`和`Renderer`处理与用户界面工具包(如 wxPython)或 PostScript® 等绘图语言交互的所有细节,`Artist`处理所有高级结构,如表示和布局图形,文本和线条。通常用户话费95%的时间来处理 Artist。 +matplotlib API 有三个层级。 `matplotlib.backend_bases.FigureCanvas`是绘制图形的区域,`matplotlib.backend_bases.Renderer`是知道如何在`ChartCanvas`上绘制的对象,而`matplotlib.artist.Artist`是知道如何使用渲染器在画布上画图的对象。 `FigureCanvas`和`Renderer`处理与用户界面工具包(如 wxPython)或 PostScript® 等绘图语言交互的所有细节,`Artist`处理所有高级结构,如表示和布局图形,文本和线条。用户通常要花费95%的时间来处理艺术家。 -有两种类型的 Artist:基本类型和容器类型。基本类型表示我们想要绘制到画布上的标准图形对象:`Line2D`,`Rectangle`,`Text`,`AxesImage`等,容器是放置它们的位置(`Axis`,`Axes`和`Figure`)。标准用法是创建一个`Figure`实例,使用`Figure`创建一个或多个`Axes`或`Subplot`实例,并使用`Axes`实例的辅助方法来创建基本类型。在下面的示例中,我们使用`matplotlib.pyplot.figure()`创建一个`Figure`实例,这是一个便捷的方法,用于实例化`Figure`实例并将它们与您的用户界面或绘图工具包`FigureCanvas`连接。正如我们将在下面讨论的,这不是必须的 - 你可以直接使用 PostScript,PDF,Gtk+ 或 wxPython `FigureCanvas`实例,直接实例化你的图形并连接它们 - 但是因为我们在这里关注艺术家 API,我们让`pyplot`为我们处理一些细节: +有两种类型的艺术家:基本类型和容器类型。基本类型表示我们想要绘制到画布上的标准图形对象:`Line2D`,`Rectangle`,`Text`,`AxesImage`等,容器是放置它们的位置(`Axis`,`Axes`和`Figure`)。标准用法是创建一个`Figure`实例,使用`Figure`创建一个或多个`Axes`或`Subplot`实例,并使用`Axes`实例的辅助方法来创建基本类型。在下面的示例中,我们使用`matplotlib.pyplot.figure()`创建一个`Figure`实例,这是一个便捷的方法,用于实例化`Figure`实例并将它们与您的用户界面或绘图工具包`FigureCanvas`连接。正如我们将在下面讨论的,这不是必须的 - 你可以直接使用 PostScript,PDF,Gtk+ 或 wxPython `FigureCanvas`实例,直接实例化你的图形并连接它们 - 但是因为我们在这里关注艺术家 API,我们让`pyplot`为我们处理一些细节: ```py import matplotlib.pyplot as plt @@ -121,12 +121,12 @@ In [149]: matplotlib.artist.getp(fig.patch) zorder = 1 ``` -所有类的文档字符串也包含`Artist`属性,因此您可以查阅交互式“帮助”或 [Artist 模块](http://matplotlib.org/api/artist_api.html#artist-api),来获取给定对象的属性列表。 +所有类的文档字符串也包含`Artist`属性,因此您可以查阅交互式“帮助”或 [`Artist`模块](http://matplotlib.org/api/artist_api.html#artist-api),来获取给定对象的属性列表。 ## 对象容器 -现在我们知道如何检查和设置我们想要配置的给定对象的属性,现在我们需要如何获取该对象。 前面提到了两种对象:基本类型和容器类型。 基本类型通常是你想要配置的东西(`Text`实例的字体,`Line2D`的宽度),虽然容器也有一些属性 - 例如 `Axes`是一个容器 Artist,包含你的绘图中的许多基本类型,但它也有属性,比如`xscale`来控制`xaxis`是“线性”还是“对数”。 在本节中,我们将回顾各种容器对象存储您想要访问的艺术家的位置。 +现在我们知道如何检查和设置我们想要配置的给定对象的属性,现在我们需要如何获取该对象。 前面提到了两种对象:基本类型和容器类型。 基本类型通常是你想要配置的东西(`Text`实例的字体,`Line2D`的宽度),虽然容器也有一些属性 - 例如 `Axes`是一个容器艺术家,包含你的绘图中的许多基本类型,但它也有属性,比如`xscale`来控制`xaxis`是“线性”还是“对数”。 在本节中,我们将回顾各种容器对象存储您想要访问的艺术家的位置。 ## 图形容器 diff --git a/3.6.md b/3.6.md index 32c6b66a9744b33331c1f14a28877dac74f7dadf..aaea705def78bb8b7245860e4d004d01af1e6b3a 100644 --- a/3.6.md +++ b/3.6.md @@ -35,7 +35,7 @@ handles, labels = ax.get_legend_handles_labels() ax.legend(handles, labels) ``` -`get_legend_handles_labels()`函数返回轴域上存在的句柄/artist 的列表,这些句柄/artist 可以用于为结果图例生成条目 - 但值得注意的是,并非所有艺术家都可以添加到图例中, 这种情况下会创建『代理』(请参阅[特地为添加到图例创建 artist(也称为代理 artist)](http://matplotlib.org/users/legend_guide.html#proxy-legend-handles),来了解更多详细信息)。 +`get_legend_handles_labels()`函数返回轴域上存在的句柄/艺术家的列表,这些句柄/艺术家可以用于为结果图例生成条目 - 但值得注意的是,并非所有艺术家都可以添加到图例中, 这种情况下会创建『代理』(请参阅[特地为添加到图例创建艺术家(也称为代理艺术家)](http://matplotlib.org/users/legend_guide.html#proxy-legend-handles),来了解更多详细信息)。 为了完全控制要添加到图例的内容,通常将适当的句柄直接传递给`legend()`: @@ -53,7 +53,7 @@ line_down, = plt.plot([3,2,1], label='Line 1') plt.legend([line_up, line_down], ['Line Up', 'Line Down']) ``` -## 特地为添加到图例创建 artist(也称为代理 artist) +## 特地为添加到图例创建艺术家(也称为代理艺术家) 并非所有的句柄都可以自动转换为图例条目,因此通常需要创建一个可转换的艺术家。 图例句柄不必存在于被用到的图像或轴域上。 @@ -193,7 +193,7 @@ plt.legend([red_dot, (red_dot, white_cross)], ["Attr A", "Attr A+B"]) ### 实现自定义图例处理器 -可以实现自定义处理器,将任何句柄转换为图例的键(句柄不必要是`matplotlib`artist)。 处理器必须实现`legend_artist`方法,该方法为要使用的图例返回单个 artist。 有关`legend_artist`的详细信息,请参阅[`legend_artist()`](http://matplotlib.org/api/legend_api.html#matplotlib.legend_handler.HandlerBase.legend_artist)。 +可以实现自定义处理器,将任何句柄转换为图例的键(句柄不必要是`matplotlib`artist)。 处理器必须实现`legend_artist`方法,该方法为要使用的图例返回单个艺术家。 有关`legend_artist`的详细信息,请参阅[`legend_artist()`](http://matplotlib.org/api/legend_api.html#matplotlib.legend_handler.HandlerBase.legend_artist)。 ```py import matplotlib.pyplot as plt diff --git a/3.9.md b/3.9.md index 48b30fcfebb542d72d4dc18c868edb60c4d6dd0f..429e2f23a5986ae78d92d3c2c319f77ef750df02 100644 --- a/3.9.md +++ b/3.9.md @@ -6,11 +6,11 @@ > 协议:[CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/) -Matplotlib 的`patheffects`模块提供了一些功能,用于将多个绘制层次应用到任何 Artist,并可以通过路径呈现。 +Matplotlib 的`patheffects`模块提供了一些功能,用于将多个绘制层次应用到任何艺术家,并可以通过路径呈现。 可以对其应用路径效果的艺术家包括`Patch`,`Line2D`,`Collection`,甚至文本。 每个艺术家的路径效果都可以通过`set_path_effects`方法(`set_path_effects`)控制,它需要一个`AbstractPathEffect`的可迭代实例。 -最简单的路径效果是普通效果,它简单地绘制 Artist,并没有任何效果: +最简单的路径效果是普通效果,它简单地绘制艺术家,并没有任何效果: ```py import matplotlib.pyplot as plt @@ -28,7 +28,7 @@ plt.show() ## 添加阴影 -比正常效果更有趣的路径效果是阴影,我们可以应用于任何基于路径的 Artist。 `SimplePatchShadow`和`SimpleLineShadow`类通过在基本艺术家下面绘制填充补丁或线条补丁来实现它: +比正常效果更有趣的路径效果是阴影,我们可以应用于任何基于路径的艺术家。 `SimplePatchShadow`和`SimpleLineShadow`类通过在基本艺术家下面绘制填充补丁或线条补丁来实现它: ```py import matplotlib.pyplot as plt diff --git a/4.5.md b/4.5.md index 8344e0af44425ea2f519c4ab85a3b1d269aabd1e..1004c31bd2defdb9d405077bcdadbd5078bf9630 100644 --- a/4.5.md +++ b/4.5.md @@ -244,7 +244,7 @@ ax.add_artist(at) `loc`关键字与`legend`命令中含义相同。 -一个简单的应用是当艺术家(或艺术家的集合)的像素大小在创建时已知。 例如,如果要绘制一个固定大小为 20 像素 ×20 像素(半径为 10 像素)的圆,则可以使用`AnchoredDrawingArea`。 实例使用绘图区域的大小创建(以像素为单位)。 用户可以在绘图区任意添加 artist。 注意,添加到绘图区域的艺术家的范围与绘制区域本身的位置无关,只和初始大小有关。 +一个简单的应用是当艺术家(或艺术家的集合)的像素大小在创建时已知。 例如,如果要绘制一个固定大小为 20 像素 ×20 像素(半径为 10 像素)的圆,则可以使用`AnchoredDrawingArea`。 实例使用绘图区域的大小创建(以像素为单位)。 用户可以在绘图区任意添加艺术家。 注意,添加到绘图区域的艺术家的范围与绘制区域本身的位置无关,只和初始大小有关。 ```py from mpl_toolkits.axes_grid.anchored_artists import AnchoredDrawingArea @@ -279,7 +279,7 @@ box.drawing_area.add_artist(el) ![](http://matplotlib.org/_images/anchored_box03.png) -如图例所示,可以设置`bbox_to_anchor`参数。 使用`HPacker`和`VPacker`,你可以像图例中一样排列 artist(事实上,这是图例的创建方式)。 +如图例所示,可以设置`bbox_to_anchor`参数。 使用`HPacker`和`VPacker`,你可以像图例中一样排列艺术家(事实上,这是图例的创建方式)。 [源代码](http://matplotlib.org/users/plotting/examples/anchored_box04.py) @@ -329,7 +329,7 @@ matplotlib 中的标注支持[标注文本](http://matplotlib.org/users/annotati ![](http://matplotlib.org/_images/annotate_simple_coord01.png) - 请注意,你的责任是在绘制`an2`之前确定坐标 artist(上例中的`an1`)的范围。 在大多数情况下,这意味着`an2`需要晚于`an1`。 + 请注意,你的责任是在绘制`an2`之前确定坐标艺术家(上例中的`an1`)的范围。 在大多数情况下,这意味着`an2`需要晚于`an1`。 3. 一个返回`BboxBase`或`Transform`的实例的可调用对象。 如果返回一个变换,它与 1 相同,如果返回`bbox`,它与 2 相同。可调用对象应该接受`renderer`实例的单个参数。 例如,以下两个命令产生相同的结果: diff --git a/7.3.md b/7.3.md index 5c40a148d18a626f6d0c9f257aaea9db81b78836..78c303130469696a4c80ae885e861bc631b1d8e6 100644 --- a/7.3.md +++ b/7.3.md @@ -399,7 +399,7 @@ def pick_handler(event): `artist` -生成拾取事件的`Artist `。 +生成拾取事件的`Artist`。 另外,像`Line2D`和`PatchCollection`的某些艺术家可以将附加的元数据(如索引)附加到满足选择器标准的数据中(例如,行中在指定 ε 容差内的所有点)