Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
matplotlib-doc-zh
提交
451fb4ef
M
matplotlib-doc-zh
项目概览
OpenDocCN
/
matplotlib-doc-zh
8 个月 前同步成功
通知
0
Star
192
Fork
111
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
matplotlib-doc-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
451fb4ef
编写于
1月 29, 2017
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix 'artist'
上级
763e97d0
变更
6
显示空白变更内容
内联
并排
Showing
6 changed file
with
15 addition
and
15 deletion
+15
-15
1.md
1.md
+1
-1
3.5.md
3.5.md
+4
-4
3.6.md
3.6.md
+3
-3
3.9.md
3.9.md
+3
-3
4.5.md
4.5.md
+3
-3
7.3.md
7.3.md
+1
-1
未找到文件。
1.md
浏览文件 @
451fb4ef
...
...
@@ -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 应用程序中。
...
...
3.5.md
浏览文件 @
451fb4ef
# 艺术家教程
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`
是“线性”还是“对数”。 在本节中,我们将回顾各种容器对象存储您想要访问的艺术家的位置。
## 图形容器
...
...
3.6.md
浏览文件 @
451fb4ef
...
...
@@ -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
...
...
3.9.md
浏览文件 @
451fb4ef
...
...
@@ -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
...
...
4.5.md
浏览文件 @
451fb4ef
...
...
@@ -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`
实例的单个参数。 例如,以下两个命令产生相同的结果:
...
...
7.3.md
浏览文件 @
451fb4ef
...
...
@@ -399,7 +399,7 @@ def pick_handler(event):
`artist`
生成拾取事件的
`Artist
`
。
生成拾取事件的
`Artist`
。
另外,像
`Line2D`
和
`PatchCollection`
的某些艺术家可以将附加的元数据(如索引)附加到满足选择器标准的数据中(例如,行中在指定 ε 容差内的所有点)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录