This commit is contained in:
skywateryang 2022-01-07 16:08:57 +08:00
parent a86fa9ce8a
commit ebcb9c8264
39 changed files with 577 additions and 663 deletions

View File

@ -30,9 +30,9 @@ Matplotlib可以说是python数据可视化最重要且常见的工具之一
## 使用说明 ## 使用说明
- 使用前请将matplotlib升级到最新版本V3.3.3(2020年12月),否则可能会出现报错! - 使用前请将matplotlib升级至V3.4.2以上(2022年1月),否则可能会出现报错!
- 本教程独立网站已上线:[https://datawhalechina.github.io/fantastic-matplotlib/](https://datawhalechina.github.io/fantastic-matplotlib/) - 本教程独立网站已上线:[https://datawhalechina.github.io/fantastic-matplotlib/](https://datawhalechina.github.io/fantastic-matplotlib/)
- 使用时若发现任何问题,或是你对项目内容有好的建议,欢迎留言交流 - 使用时若发现任何问题,或是你对项目内容有好的建议,欢迎留言交流联系邮箱skywateryang@126.com
## 目录 ## 目录
@ -41,31 +41,23 @@ Matplotlib可以说是python数据可视化最重要且常见的工具之一
> 和matplotlib的初次邂逅赶紧拿出画布画笔一段奇幻的旅途即将开启 > 和matplotlib的初次邂逅赶紧拿出画布画笔一段奇幻的旅途即将开启
本回作为引入介绍了matplotlib可视化绘图包的特点以及如何用最简单的几行代码画出一幅可视化图表。
* 第二回:艺术画笔见乾坤 * 第二回:艺术画笔见乾坤
> 挥舞起手中的艺术画笔,发挥想象力,在画布上自由地绘制图形 > 挥舞起手中的艺术画笔,发挥想象力,在画布上自由地绘制图形
本回作为整个matplotlib宇宙中最重要的一个环节重点介绍了matplotlib绘图的核心API以及使用matplotlib绘制基本元素的方法
* 第三回:布局格式定方圆 * 第三回:布局格式定方圆
> 没有规矩不成方圆,你应当开始学会如何合理地在画布上布局了 > 没有规矩不成方圆,你应当开始学会如何合理地在画布上布局了
本回介绍了常用的两种绘图布局方法,让使用者可以自由地在画布中进行布局
* 第四回:文字图例尽眉目 * 第四回:文字图例尽眉目
> 为了让你的画流传更久远,快来学习下如何在画布上题字吧 > 为了让你的画流传更久远,快来学习下如何在画布上题字吧
本回介绍了如何在图像上,坐标轴上绘制文本,以及如何在图像上绘制图例。
* 第五回:样式色彩秀芳华 * 第五回:样式色彩秀芳华
> 下一步你需要学习下怎么样绘制出更加花样繁复,色彩绚丽的画了 > 下一步你需要学习下怎么样绘制出更加花样繁复,色彩绚丽的画了
本回介绍了4种修改matplotlib绘图样式的方法以及6种修改matplotlib色彩设置的方法
## 致谢 ## 致谢
@ -98,6 +90,12 @@ Matplotlib可以说是python数据可视化最重要且常见的工具之一
第五章:杨剑砺 第五章:杨剑砺
> 《Fantastic-Matplotlib》V1.1 :第一次全面更新
全部章节的更新完善:杨剑砺
## 关注我们 ## 关注我们
<div align=center><img src="https://img-blog.csdnimg.cn/20210607220347359.png" width = "250" height = "270" alt="Datawhale是一个专注AI领域的开源组织以“for the learner和学习者一起成长”为愿景构建对学习者最有价值的开源学习社区。关注我们一起学习成长。"></div> <div align=center><img src="https://img-blog.csdnimg.cn/20210607220347359.png" width = "250" height = "270" alt="Datawhale是一个专注AI领域的开源组织以“for the learner和学习者一起成长”为愿景构建对学习者最有价值的开源学习社区。关注我们一起学习成长。"></div>

View File

@ -1,4 +1,4 @@
# Sphinx build info version 1 # Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
config: 8c8106cd161cd2ce86ae48c61840ee9f config: 815228cb4fe22cc72c32eeeb4cd16a8b
tags: 645f666f9bcd5a90fca523b33c5a78b7 tags: 645f666f9bcd5a90fca523b33c5a78b7

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 KiB

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.5 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

BIN
docs/_images/index_6_1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 21 KiB

BIN
docs/_images/index_9_03.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

View File

@ -6,8 +6,18 @@ kernelspec:
display_name: Python 3 display_name: Python 3
name: python3 name: python3
--- ---
# 第二回:艺术画笔见乾坤 ```{code-cell} ipython3
import numpy as np
import pandas as pd
import re
import matplotlib
import matplotlib.pyplot as plt
from matplotlib.lines import Line2D
from matplotlib.patches import Circle, Wedge
from matplotlib.collections import PatchCollection
```
# 第二回:艺术画笔见乾坤
## 一、概述 ## 一、概述
@ -36,54 +46,39 @@ Artist有两种类型`primitives` 和`containers`。
`container`是容器,即用来装基本要素的地方,包括**图形figure、坐标系Axes和坐标轴Axis**。他们之间的关系如下图所示: `container`是容器,即用来装基本要素的地方,包括**图形figure、坐标系Axes和坐标轴Axis**。他们之间的关系如下图所示:
![分类](https://img-blog.csdnimg.cn/20201122230916134.jpeg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zODYwNDk2MQ==,size_16,color_FFFFFF,t_70#pic_center) ![分类](https://img-blog.csdnimg.cn/20201122230916134.jpeg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zODYwNDk2MQ==,size_16,color_FFFFFF,t_70#pic_center)
### 3. matplotlib标准用法 可视化中常见的artist类可以参考下图这张表格解释下每一列的含义。
matplotlib的标准使用流程为 第一列表示matplotlib中子图上的辅助方法可以理解为可视化中不同种类的图表类型如柱状图折线图直方图等这些图表都可以用这些辅助方法直接画出来属于更高层级的抽象。
1. 创建一个`Figure`实例
2. 使用`Figure`实例创建一个或者多个`Axes`或`Subplot`实例
3. 使用`Axes`实例的辅助方法来创建`primitive`
值得一提的是Axes是一种容器它可能是matplotlib API中最重要的类并且我们大多数时间都花在和它打交道上。更具体的信息会在第三节容器小节说明。 第二列表示不同图表背后的artist类比如折线图方法`plot`在底层用到的就是`Line2D`这一artist类。
一个流程示例及说明如下:
```{code-cell} ipython3
import matplotlib.pyplot as plt
import numpy as np
# step 1
# 我们用 matplotlib.pyplot.figure() 创建了一个Figure实例
fig = plt.figure()
# step 2
# 然后用Figure实例创建了一个两行一列(即可以有两个subplot)的绘图区并同时在第一个位置创建了一个subplot
ax = fig.add_subplot(2, 1, 1) # two rows, one column, first plot
# step 3
# 然后用Axes实例的方法画了一条曲线
t = np.arange(0.0, 1.0, 0.01)
s = np.sin(2*np.pi*t)
line, = ax.plot(t, s, color='blue', lw=2)
```
第三列是第二列的列表容器,例如所有在子图中创建的`Line2D`对象都会被自动收集到`ax.lines`返回的列表中。
下一节的具体案例更清楚地阐释了这三者的关系,其实在很多时候,我们只用记住第一列的辅助方法进行绘图即可,而无需关注具体底层使用了哪些类,但是了解底层类有助于我们绘制一些复杂的图表,因此也很有必要了解。
| Axes helper method | Artist | Container |
| ------------------- | ------ | ----------- |
| `bar` - bar charts | `Rectangle` | ax.patches |
| `errorbar` - error bar plots | `Line2D` and `Rectangle` | ax.lines and ax.patches |
| `fill` - shared area | `Polygon` | ax.patches |
| `hist` - histograms | `Rectangle` | ax.patches |
|`imshow` - image data | `AxesImage` | ax.images |
| `plot` - xy plots | `Line2D` | ax.lines |
| `scatter` - scatter charts | `PolyCollection` | ax.collections |
## 二、基本元素 - primitives ## 二、基本元素 - primitives
各容器中可能会包含多种`基本要素-primitives`, 所以先介绍下primitives再介绍容器。 各容器中可能会包含多种`基本要素-primitives`, 所以先介绍下primitives再介绍容器。
本章重点介绍下 `primitives` 的几种类型:**曲线-Line2D矩形-Rectangle图像-image** (其中文本-Text较为复杂会在之后单独详细说明。 本章重点介绍下 `primitives` 的几种类型:**曲线-Line2D矩形-Rectangle多边形-Polygon图像-image**
### 1. 2DLines ### 1. 2DLines
在matplotlib中曲线的绘制主要是通过类 `matplotlib.lines.Line2D` 来完成的。 在matplotlib中曲线的绘制主要是通过类 `matplotlib.lines.Line2D` 来完成的。
它的基类: `matplotlib.artist.Artist`
matplotlib中`线-line`的含义:它表示的可以是连接所有顶点的实线样式,也可以是每个顶点的标记。此外,这条线也会受到绘画风格的影响,比如,我们可以创建虚线种类的线。 matplotlib中`线-line`的含义:它表示的可以是连接所有顶点的实线样式,也可以是每个顶点的标记。此外,这条线也会受到绘画风格的影响,比如,我们可以创建虚线种类的线。
它的构造函数: 它的构造函数:
> class matplotlib.lines.Line2D(xdata, ydata, linewidth=None, linestyle=None, color=None, marker=None, markersize=None, markeredgewidth=None, markeredgecolor=None, markerfacecolor=None, markerfacecoloralt='none', fillstyle=None, antialiased=None, dash_capstyle=None, solid_capstyle=None, dash_joinstyle=None, solid_joinstyle=None, pickradius=5, drawstyle=None, markevery=None, **kwargs) >class matplotlib.lines.Line2D(xdata, ydata, linewidth=None, linestyle=None, color=None, marker=None, markersize=None, markeredgewidth=None, markeredgecolor=None, markerfacecolor=None, markerfacecoloralt='none', fillstyle=None, antialiased=None, dash_capstyle=None, solid_capstyle=None, dash_joinstyle=None, solid_joinstyle=None, pickradius=5, drawstyle=None, markevery=None, **kwargs)
@ -97,7 +92,7 @@ matplotlib中`线-line`的含义:它表示的可以是连接所有顶点的实
+ **markersize**:标记的size + **markersize**:标记的size
其他详细参数可参考[Line2D官方文档](https://matplotlib.org/api/_as_gen/matplotlib.lines.Line2D.html#examples-using-matplotlib-lines-line2d) 其他详细参数可参考[Line2D官方文档](https://matplotlib.org/stable/api/_as_gen/matplotlib.lines.Line2D.html)
#### a. 如何设置Line2D的属性 #### a. 如何设置Line2D的属性
有三种方法可以用设置线的属性。 有三种方法可以用设置线的属性。
@ -110,7 +105,6 @@ matplotlib中`线-line`的含义:它表示的可以是连接所有顶点的实
```{code-cell} ipython3 ```{code-cell} ipython3
# 1) 直接在plot()函数中设置 # 1) 直接在plot()函数中设置
import matplotlib.pyplot as plt
x = range(0,5) x = range(0,5)
y = [2,5,7,8,10] y = [2,5,7,8,10]
plt.plot(x,y, linewidth=10); # 设置线的粗细参数为10 plt.plot(x,y, linewidth=10); # 设置线的粗细参数为10
@ -118,23 +112,16 @@ plt.plot(x,y, linewidth=10); # 设置线的粗细参数为10
```{code-cell} ipython3 ```{code-cell} ipython3
# 2) 通过获得线对象,对线对象进行设置 # 2) 通过获得线对象,对线对象进行设置
x = range(0,5) x = range(0,5)
y = [2,5,7,8,10] y = [2,5,7,8,10]
line, = plt.plot(x, y, '-') line, = plt.plot(x, y, '-') # 这里等号坐标的line,是一个列表解包的操作目的是获取plt.plot返回列表中的Line2D对象
line.set_antialiased(False) # 关闭抗锯齿功能 line.set_antialiased(False); # 关闭抗锯齿功能
``` ```
```{code-cell} ipython3 ```{code-cell} ipython3
# 3) 获得线属性使用setp()函数设置 # 3) 获得线属性使用setp()函数设置
x = range(0,5) x = range(0,5)
@ -153,17 +140,23 @@ plt.setp(lines, color='r', linewidth=10);
绘制直线line常用的方法有两种: 介绍两种绘制直线line常用的方法:
+ **pyplot方法绘制** + **plot方法绘制**
+ **Line2D对象绘制** + **Line2D对象绘制**
```{code-cell} ipython3 ```{code-cell} ipython3
# 1. pyplot方法绘制 # 1. plot方法绘制
import matplotlib.pyplot as plt
x = range(0,5) x = range(0,5)
y = [2,5,7,8,10] y1 = [2,5,7,8,10]
plt.plot(x,y); y2= [3,6,8,9,11]
fig,ax= plt.subplots()
ax.plot(x,y1)
ax.plot(x,y2)
print(ax.lines); # 通过直接使用辅助方法画线打印ax.lines后可以看到在matplotlib在底层创建了两个Line2D对象
``` ```
@ -174,21 +167,21 @@ plt.plot(x,y);
```{code-cell} ipython3 ```{code-cell} ipython3
# 2. Line2D对象绘制 # 2. Line2D对象绘制
import matplotlib.pyplot as plt
from matplotlib.lines import Line2D
fig = plt.figure() x = range(0,5)
ax = fig.add_subplot(111) y1 = [2,5,7,8,10]
line = Line2D(x, y) y2= [3,6,8,9,11]
ax.add_line(line) fig,ax= plt.subplots()
ax.set_xlim(min(x), max(x)) lines = [Line2D(x, y1), Line2D(x, y2,color='orange')] # 显式创建Line2D对象
ax.set_ylim(min(y), max(y)) for line in lines:
ax.add_line(line) # 使用add_line方法将创建的Line2D添加到子图中
plt.show() ax.set_xlim(0,4)
ax.set_ylim(2, 11);
``` ```
**2) errorbar绘制误差折线图** **2) errorbar绘制误差折线图**
@ -210,33 +203,29 @@ pyplot里有个专门绘制误差线的功能通过`errorbar`类实现,它
```{code-cell} ipython3 ```{code-cell} ipython3
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure() fig = plt.figure()
x = np.arange(10) x = np.arange(10)
y = 2.5 * np.sin(x / 20 * np.pi) y = 2.5 * np.sin(x / 20 * np.pi)
yerr = np.linspace(0.05, 0.2, 10) yerr = np.linspace(0.05, 0.2, 10)
plt.errorbar(x, y + 3, yerr=yerr, label='both limits (default)'); plt.errorbar(x, y + 3, yerr=yerr, label='both limits (default)');
``` ```
### 2. patches ### 2. patches
matplotlib.patches.Patch类是二维图形类。它的基类是matplotlib.artist.Artist它的构造函数 matplotlib.patches.Patch类是二维图形类,并且它是众多二维图形的父类,它的所有子类见[matplotlib.patches API](https://matplotlib.org/stable/api/patches_api.html)
详细清单见 [matplotlib.patches API](https://matplotlib.org/api/patches_api.html) Patch类的构造函数
>Patch(edgecolor=None, facecolor=None, color=None,
> Patch(edgecolor=None, facecolor=None, color=None,
linewidth=None, linestyle=None, antialiased=None, linewidth=None, linestyle=None, antialiased=None,
hatch=None, fill=True, capstyle=None, joinstyle=None, hatch=None, fill=True, capstyle=None, joinstyle=None,
**kwargs) **kwargs)
本小节重点讲述三种最常见的子类,矩形,多边形和楔型。
#### a. Rectangle-矩形 #### a. Rectangle-矩形
`Rectangle`矩形类在官网中的定义是: 通过锚点xy及其宽度和高度生成。 `Rectangle`矩形类在官网中的定义是: 通过锚点xy及其宽度和高度生成。
@ -244,7 +233,7 @@ Rectangle本身的主要比较简单即xy控制锚点width和height分别
> class matplotlib.patches.Rectangle(xy, width, height, angle=0.0, **kwargs) > class matplotlib.patches.Rectangle(xy, width, height, angle=0.0, **kwargs)
在实际中最常见的矩形图是**`hist直方图`和`bar条形图`** 在实际中最常见的矩形图是`hist直方图`和`bar条形图`。
@ -266,27 +255,23 @@ hist绘制直方图
```{code-cell} ipython3 ```{code-cell} ipython3
import matplotlib.pyplot as plt
import numpy as np
x=np.random.randint(0,100,100) #生成[0-100)之间的100个数据,即 数据集 x=np.random.randint(0,100,100) #生成[0-100)之间的100个数据,即 数据集
bins=np.arange(0,101,10) #设置连续的边界值,即直方图的分布区间[0,10),[10,20)... bins=np.arange(0,101,10) #设置连续的边界值,即直方图的分布区间[0,10),[10,20)...
plt.hist(x,bins,color='fuchsia',alpha=0.5)#alpha设置透明度0为完全透明 plt.hist(x,bins,color='fuchsia',alpha=0.5)#alpha设置透明度0为完全透明
plt.xlabel('scores') plt.xlabel('scores')
plt.ylabel('count') plt.ylabel('count')
plt.xlim(0,100)#设置x轴分布范围 plt.xlim(0,100); #设置x轴分布范围 plt.show()
plt.show()
``` ```
`Rectangle`矩形类绘制直方图 `Rectangle`矩形类绘制直方图
```{code-cell} ipython3 ```{code-cell} ipython3
import pandas as pd
import re
df = pd.DataFrame(columns = ['data']) df = pd.DataFrame(columns = ['data'])
df.loc[:,'data'] = x df.loc[:,'data'] = x
df['fenzu'] = pd.cut(df['data'], bins=bins, right = False,include_lowest=True) df['fenzu'] = pd.cut(df['data'], bins=bins, right = False,include_lowest=True)
@ -299,7 +284,6 @@ df_cnt.sort_values('mini',ascending = True,inplace = True)
df_cnt.reset_index(inplace = True,drop = True) df_cnt.reset_index(inplace = True,drop = True)
#用Rectangle把hist绘制出来 #用Rectangle把hist绘制出来
import matplotlib.pyplot as plt
fig = plt.figure() fig = plt.figure()
ax1 = fig.add_subplot(111) ax1 = fig.add_subplot(111)
@ -309,17 +293,18 @@ for i in df_cnt.index:
ax1.add_patch(rect) ax1.add_patch(rect)
ax1.set_xlim(0, 100) ax1.set_xlim(0, 100)
ax1.set_ylim(0, 16) ax1.set_ylim(0, 16);
plt.show()
``` ```
**2) bar-柱状图** **2) bar-柱状图**
> matplotlib.pyplot.bar(left, height, alpha=1, width=0.8, color=, edgecolor=, label=, lw=3) >matplotlib.pyplot.bar(left, height, alpha=1, width=0.8, color=, edgecolor=, label=, lw=3)
下面是一些常用的参数: 下面是一些常用的参数:
+ **left**x轴的位置序列一般采用range函数产生一个序列但是有时候可以是字符串 + **left**x轴的位置序列一般采用range函数产生一个序列但是有时候可以是字符串
@ -339,23 +324,18 @@ plt.show()
```{code-cell} ipython3 ```{code-cell} ipython3
# bar绘制柱状图 # bar绘制柱状图
import matplotlib.pyplot as plt
y = range(1,17) y = range(1,17)
plt.bar(np.arange(16), y, alpha=0.5, width=0.5, color='yellow', edgecolor='red', label='The First Bar', lw=3); plt.bar(np.arange(16), y, alpha=0.5, width=0.5, color='yellow', edgecolor='red', label='The First Bar', lw=3);
``` ```
```{code-cell} ipython3 ```{code-cell} ipython3
# Rectangle矩形类绘制柱状图 # Rectangle矩形类绘制柱状图
#import matplotlib.pyplot as plt
fig = plt.figure() fig = plt.figure()
ax1 = fig.add_subplot(111) ax1 = fig.add_subplot(111)
@ -363,17 +343,19 @@ for i in range(1,17):
rect = plt.Rectangle((i+0.25,0),0.5,i) rect = plt.Rectangle((i+0.25,0),0.5,i)
ax1.add_patch(rect) ax1.add_patch(rect)
ax1.set_xlim(0, 16) ax1.set_xlim(0, 16)
ax1.set_ylim(0, 16) ax1.set_ylim(0, 16);
plt.show()
``` ```
#### b. Polygon-多边形 #### b. Polygon-多边形
matplotlib.patches.Polygon类是多边形类。其基类是matplotlib.patches.Patch它的构造函数: matplotlib.patches.Polygon类是多边形类。它的构造函数
> class matplotlib.patches.Polygon(xy, closed=True, **kwargs) >class matplotlib.patches.Polygon(xy, closed=True, **kwargs)
xy是一个N×2的numpy array为多边形的顶点。 xy是一个N×2的numpy array为多边形的顶点。
closed为True则指定多边形将起点和终点重合从而显式关闭多边形。 closed为True则指定多边形将起点和终点重合从而显式关闭多边形。
@ -381,14 +363,13 @@ closed为True则指定多边形将起点和终点重合从而显式关闭多边
matplotlib.patches.Polygon类中常用的是fill类它是基于xy绘制一个填充的多边形它的定义 matplotlib.patches.Polygon类中常用的是fill类它是基于xy绘制一个填充的多边形它的定义
> matplotlib.pyplot.fill(*args, data=None, **kwargs) >matplotlib.pyplot.fill(*args, data=None, **kwargs)
参数说明 : 关于x、y和color的序列其中color是可选的参数每个多边形都是由其节点的x和y位置列表定义的后面可以选择一个颜色说明符。您可以通过提供多个x、y、[颜色]组来绘制多个多边形。 参数说明 : 关于x、y和color的序列其中color是可选的参数每个多边形都是由其节点的x和y位置列表定义的后面可以选择一个颜色说明符。您可以通过提供多个x、y、[颜色]组来绘制多个多边形。
```{code-cell} ipython3 ```{code-cell} ipython3
# 用fill来绘制图形 # 用fill来绘制图形
import matplotlib.pyplot as plt
x = np.linspace(0, 5 * np.pi, 1000) x = np.linspace(0, 5 * np.pi, 1000)
y1 = np.sin(x) y1 = np.sin(x)
y2 = np.sin(2 * x) y2 = np.sin(2 * x)
@ -396,22 +377,22 @@ plt.fill(x, y1, color = "g", alpha = 0.3);
``` ```
#### c. Wedge-契形 #### c. Wedge-契形
matplotlib.patches.Polygon类是多边形类。其基类是matplotlib.patches.Patch它的构造函数 matplotlib.patches.Polygon类是多边形类。其基类是matplotlib.patches.Patch它的构造函数
> class matplotlib.patches.Wedge(center, r, theta1, theta2, width=None, **kwargs) >class matplotlib.patches.Wedge(center, r, theta1, theta2, width=None, **kwargs)
一个Wedge-契形 是以坐标x,y为中心半径为r从θ1扫到θ2(单位是度)。 一个Wedge-契形 是以坐标x,y为中心半径为r从θ1扫到θ2(单位是度)。
如果宽度给定则从内半径r -宽度到外半径r画出部分楔形。wedge中比较常见的是绘制饼状图。 如果宽度给定则从内半径r -宽度到外半径r画出部分楔形。wedge中比较常见的是绘制饼状图。
matplotlib.pyplot.pie语法 matplotlib.pyplot.pie语法
> matplotlib.pyplot.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=0, radius=1, counterclock=True, wedgeprops=None, textprops=None, center=0, 0, frame=False, rotatelabels=False, *, normalize=None, data=None) >matplotlib.pyplot.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=0, radius=1, counterclock=True, wedgeprops=None, textprops=None, center=0, 0, frame=False, rotatelabels=False, *, normalize=None, data=None)
制作数据x的饼图每个楔子的面积用x/sum(x)表示。 制作数据x的饼图每个楔子的面积用x/sum(x)表示。
其中最主要的参数是前4个 其中最主要的参数是前4个
@ -425,52 +406,51 @@ pie绘制饼状图
```{code-cell} ipython3 ```{code-cell} ipython3
import matplotlib.pyplot as plt
labels = 'Frogs', 'Hogs', 'Dogs', 'Logs' labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'
sizes = [15, 30, 45, 10] sizes = [15, 30, 45, 10]
explode = (0, 0.1, 0, 0) explode = (0, 0.1, 0, 0)
fig1, ax1 = plt.subplots() fig1, ax1 = plt.subplots()
ax1.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%', shadow=True, startangle=90) ax1.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%', shadow=True, startangle=90)
ax1.axis('equal') # Equal aspect ratio ensures that pie is drawn as a circle. ax1.axis('equal'); # Equal aspect ratio ensures that pie is drawn as a circle.
plt.show()
``` ```
wedge绘制饼图 wedge绘制饼图
```{code-cell} ipython3 ```{code-cell} ipython3
import matplotlib.pyplot as plt fig = plt.figure(figsize=(5,5))
from matplotlib.patches import Circle, Wedge
from matplotlib.collections import PatchCollection
fig = plt.figure()
ax1 = fig.add_subplot(111) ax1 = fig.add_subplot(111)
theta1 = 0 theta1 = 0
sizes = [15, 30, 45, 10] sizes = [15, 30, 45, 10]
patches = [] patches = []
patches += [ patches += [
Wedge((0.3, 0.3), .2, 0, 54), # Full circle Wedge((0.5, 0.5), .4, 0, 54),
Wedge((0.3, 0.3), .2, 54, 162), # Full ring Wedge((0.5, 0.5), .4, 54, 162),
Wedge((0.3, 0.3), .2, 162, 324), # Full sector Wedge((0.5, 0.5), .4, 162, 324),
Wedge((0.3, 0.3), .2, 324, 360), # Ring sector Wedge((0.5, 0.5), .4, 324, 360),
] ]
colors = 100 * np.random.rand(len(patches)) colors = 100 * np.random.rand(len(patches))
p = PatchCollection(patches, alpha=0.4) p = PatchCollection(patches, alpha=0.8)
p.set_array(colors) p.set_array(colors)
ax1.add_collection(p) ax1.add_collection(p);
plt.show()
``` ```
### 3. collections ### 3. collections
collections类是用来绘制一组对象的集合collections有许多不同的子类如RegularPolyCollection, CircleCollection, Pathcollection, 分别对应不同的集合子类型。其中比较常用的就是散点图它是属于PathCollection子类scatter方法提供了该类的封装根据x与y绘制不同大小或颜色标记的散点图。 它的构造方法: collections类是用来绘制一组对象的集合collections有许多不同的子类如RegularPolyCollection, CircleCollection, Pathcollection, 分别对应不同的集合子类型。其中比较常用的就是散点图它是属于PathCollection子类scatter方法提供了该类的封装根据x与y绘制不同大小或颜色标记的散点图。 它的构造方法:
> Axes.scatter(self, x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=<deprecated parameter>, edgecolors=None, *, plotnonfinite=False, data=None, **kwargs) >Axes.scatter(self, x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=<deprecated parameter>, edgecolors=None, *, plotnonfinite=False, data=None, **kwargs)
其中最主要的参数是前5个 其中最主要的参数是前5个
@ -487,27 +467,26 @@ collections类是用来绘制一组对象的集合collections有许多不同
x = [0,2,4,6,8,10] x = [0,2,4,6,8,10]
y = [10]*len(x) y = [10]*len(x)
s = [20*2**n for n in range(len(x))] s = [20*2**n for n in range(len(x))]
plt.scatter(x,y,s=s) plt.scatter(x,y,s=s) ;
plt.show()
``` ```
### 4. images ### 4. images
images是matplotlib中绘制image图像的类其中最常用的imshow可以根据数组绘制成图像它的构造函数 images是matplotlib中绘制image图像的类其中最常用的imshow可以根据数组绘制成图像它的构造函数
> class matplotlib.image.AxesImage(ax, cmap=None, norm=None, interpolation=None, origin=None, extent=None, filternorm=True, filterrad=4.0, resample=False, **kwargs) >class matplotlib.image.AxesImage(ax, cmap=None, norm=None, interpolation=None, origin=None, extent=None, filternorm=True, filterrad=4.0, resample=False, **kwargs)
imshow根据数组绘制图像 imshow根据数组绘制图像
> matplotlib.pyplot.imshow(X, cmap=None, norm=None, aspect=None, interpolation=None, alpha=None, vmin=None, vmax=None, origin=None, extent=None, shape=<deprecated parameter>, filternorm=1, filterrad=4.0, imlim=<deprecated parameter>, resample=None, url=None, *, data=None, **kwargs >matplotlib.pyplot.imshow(X, cmap=None, norm=None, aspect=None, interpolation=None, alpha=None, vmin=None, vmax=None, origin=None, extent=None, shape=<deprecated parameter>, filternorm=1, filterrad=4.0, imlim=<deprecated parameter>, resample=None, url=None, *, data=None, **kwargs
使用imshow画图时首先需要传入一个数组数组对应的是空间内的像素位置和像素点的值interpolation参数可以设置不同的差值方法具体效果如下。 使用imshow画图时首先需要传入一个数组数组对应的是空间内的像素位置和像素点的值interpolation参数可以设置不同的差值方法具体效果如下。
```{code-cell} ipython3 ```{code-cell} ipython3
import matplotlib.pyplot as plt
import numpy as np
methods = [None, 'none', 'nearest', 'bilinear', 'bicubic', 'spline16', methods = [None, 'none', 'nearest', 'bilinear', 'bicubic', 'spline16',
'spline36', 'hanning', 'hamming', 'hermite', 'kaiser', 'quadric', 'spline36', 'hanning', 'hamming', 'hermite', 'kaiser', 'quadric',
'catrom', 'gaussian', 'bessel', 'mitchell', 'sinc', 'lanczos'] 'catrom', 'gaussian', 'bessel', 'mitchell', 'sinc', 'lanczos']
@ -522,12 +501,13 @@ for ax, interp_method in zip(axs.flat, methods):
ax.imshow(grid, interpolation=interp_method, cmap='viridis') ax.imshow(grid, interpolation=interp_method, cmap='viridis')
ax.set_title(str(interp_method)) ax.set_title(str(interp_method))
plt.tight_layout() plt.tight_layout();
plt.show()
``` ```
## 三、对象容器 - Object container ## 三、对象容器 - Object container
@ -535,7 +515,7 @@ plt.show()
比如`Axes Artist`,它是一种容器,它包含了很多`primitives`,比如`Line2D``Text`;同时,它也有自身的属性,比如`xscal`用来控制X轴是`linear`还是`log`的。 比如`Axes Artist`,它是一种容器,它包含了很多`primitives`,比如`Line2D``Text`;同时,它也有自身的属性,比如`xscal`用来控制X轴是`linear`还是`log`的。
### 1. Figure容器 ### 1. Figure容器
`matplotlib.figure.Figure`是`Artist`最顶层的`container`-对象容器,它包含了图表中的所有元素。一张图表的背景就是在`Figure.patch`的一个矩形`Rectangle`。 `matplotlib.figure.Figure`是`Artist`最顶层的`container`对象容器,它包含了图表中的所有元素。一张图表的背景就是在`Figure.patch`的一个矩形`Rectangle`。
当我们向图表添加`Figure.add_subplot()`或者`Figure.add_axes()`元素时,这些都会被添加到`Figure.axes`列表中。 当我们向图表添加`Figure.add_subplot()`或者`Figure.add_axes()`元素时,这些都会被添加到`Figure.axes`列表中。
@ -548,7 +528,10 @@ print(fig.axes) # fig.axes 中包含了subplot和axes两个实例, 刚刚添加
``` ```
由于`Figure`维持了`current axes`,因此你不应该手动的从`Figure.axes`列表中添加删除元素,而是要通过`Figure.add_subplot()`、`Figure.add_axes()`来添加元素,通过`Figure.delaxes()`来删除元素。但是你可以迭代或者访问`Figure.axes`中的`Axes`,然后修改这个`Axes`的属性。 由于`Figure`维持了`current axes`,因此你不应该手动的从`Figure.axes`列表中添加删除元素,而是要通过`Figure.add_subplot()`、`Figure.add_axes()`来添加元素,通过`Figure.delaxes()`来删除元素。但是你可以迭代或者访问`Figure.axes`中的`Axes`,然后修改这个`Axes`的属性。
@ -563,11 +546,12 @@ ax1 = fig.add_subplot(211)
for ax in fig.axes: for ax in fig.axes:
ax.grid(True) ax.grid(True)
``` ```
`Figure`也有它自己的`text、line、patch、image`。你可以直接通过`add primitive`语句直接添加。但是注意`Figure`默认的坐标系是以像素为单位你可能需要转换成figure坐标系(0,0)表示左下点,(1,1)表示右上点。 `Figure`也有它自己的`text、line、patch、image`。你可以直接通过`add primitive`语句直接添加。但是注意`Figure`默认的坐标系是以像素为单位你可能需要转换成figure坐标系(0,0)表示左下点,(1,1)表示右上点。
@ -588,10 +572,6 @@ for ax in fig.axes:
```{code-cell} ipython3 ```{code-cell} ipython3
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
fig = plt.figure() fig = plt.figure()
ax = fig.add_subplot(111) ax = fig.add_subplot(111)
rect = ax.patch # axes的patch是一个Rectangle实例 rect = ax.patch # axes的patch是一个Rectangle实例
@ -600,6 +580,9 @@ rect.set_facecolor('green')
`Axes`有许多方法用于绘图,如`.plot()、.text()、.hist()、.imshow()`等方法用于创建大多数常见的`primitive`(如`Line2DRectangleTextImage`等等)。在`primitives`中已经涉及,不再赘述。 `Axes`有许多方法用于绘图,如`.plot()、.text()、.hist()、.imshow()`等方法用于创建大多数常见的`primitive`(如`Line2DRectangleTextImage`等等)。在`primitives`中已经涉及,不再赘述。
Subplot就是一个特殊的Axes其实例是位于网格中某个区域的Subplot实例。其实你也可以在任意区域创建Axes通过Figure.add_axes([left,bottom,width,height])来创建一个任意区域的Axes其中left,bottom,width,height都是[0—1]之间的浮点数他们代表了相对于Figure的坐标。 Subplot就是一个特殊的Axes其实例是位于网格中某个区域的Subplot实例。其实你也可以在任意区域创建Axes通过Figure.add_axes([left,bottom,width,height])来创建一个任意区域的Axes其中left,bottom,width,height都是[0—1]之间的浮点数他们代表了相对于Figure的坐标。
@ -663,11 +646,7 @@ axis.get_view_interval()# 获取轴视角(位置)的间隔
下面的例子展示了如何调整一些轴和刻度的属性(忽略美观度,仅作调整参考) 下面的例子展示了如何调整一些轴和刻度的属性(忽略美观度,仅作调整参考)
@ -694,12 +673,12 @@ for line in ax1.yaxis.get_ticklines():
line.set_color('green') # 颜色 line.set_color('green') # 颜色
line.set_markersize(25) # marker大小 line.set_markersize(25) # marker大小
line.set_markeredgewidth(2)# marker粗细 line.set_markeredgewidth(2)# marker粗细
plt.show()
``` ```
### 4. Tick容器 ### 4. Tick容器
@ -720,10 +699,6 @@ x轴分为上下两个因此tick1对应下侧的轴tick2对应上侧的轴
```{code-cell} ipython3 ```{code-cell} ipython3
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
fig, ax = plt.subplots() fig, ax = plt.subplots()
ax.plot(100*np.random.rand(20)) ax.plot(100*np.random.rand(20))
@ -734,27 +709,36 @@ ax.yaxis.set_major_formatter(formatter)
# 设置ticker的参数右侧为主轴颜色为绿色 # 设置ticker的参数右侧为主轴颜色为绿色
ax.yaxis.set_tick_params(which='major', labelcolor='green', ax.yaxis.set_tick_params(which='major', labelcolor='green',
labelleft=False, labelright=True); labelleft=False, labelright=True);
``` ```
## 思考题
- primitives 和 container的区别和联系是什么分别用于控制可视化图表中的哪些要素
- 使用提供的drug数据集对第一列yyyy和第二列state分组求和画出下面折线图。PA加粗标黄其他为灰色。
图标题和横纵坐标轴标题,以及线的文本暂不做要求。
![](https://img-blog.csdnimg.cn/20210523162430365.png)
- 分别用一组长方形柱和填充面积的方式模仿画出下图,函数 y = -1 * (x - 2) * (x - 8) +10 在区间[2,9]的积分面积
![](https://img-blog.csdnimg.cn/20201126105910781.png)
![](https://img-blog.csdnimg.cn/20201126105910780.png)
## 参考资料 ## 参考资料
[1. matplotlib设计的基本逻辑](https://zhuanlan.zhihu.com/p/32693665) [1. matplotlib设计的基本逻辑](https://zhuanlan.zhihu.com/p/32693665)
[2. matplotlib.artist api](https://matplotlib.org/api/artist_api.html) [2. AI算法工程师手册](https://www.bookstack.cn/read/huaxiaozhuan-ai/spilt.2.333f5abdbabf383d.md)
[3. matplotlib官方教程](https://matplotlib.org/tutorials/intermediate/artists.html#sphx-glr-tutorials-intermediate-artists-py)
[4. AI算法工程师手册](https://www.bookstack.cn/read/huaxiaozhuan-ai/spilt.2.333f5abdbabf383d.md)
```{code-cell} ipython3
```

View File

@ -190,9 +190,9 @@
<div class="container"> <div class="container">
<p> <p>
By Datawhale<br/> By Datawhale数据可视化开源小组<br/>
&copy; Copyright © Copyright 2020.<br/> &copy; Copyright © Copyright 2021.<br/>
</p> </p>
</div> </div>
</footer> </footer>

View File

@ -205,7 +205,8 @@
<li class="toctree-l2"><a class="reference internal" href="%E7%AC%AC%E4%BA%8C%E5%9B%9E%EF%BC%9A%E8%89%BA%E6%9C%AF%E7%94%BB%E7%AC%94%E8%A7%81%E4%B9%BE%E5%9D%A4/index.html#id2">一、概述</a></li> <li class="toctree-l2"><a class="reference internal" href="%E7%AC%AC%E4%BA%8C%E5%9B%9E%EF%BC%9A%E8%89%BA%E6%9C%AF%E7%94%BB%E7%AC%94%E8%A7%81%E4%B9%BE%E5%9D%A4/index.html#id2">一、概述</a></li>
<li class="toctree-l2"><a class="reference internal" href="%E7%AC%AC%E4%BA%8C%E5%9B%9E%EF%BC%9A%E8%89%BA%E6%9C%AF%E7%94%BB%E7%AC%94%E8%A7%81%E4%B9%BE%E5%9D%A4/index.html#primitives">二、基本元素 - primitives</a></li> <li class="toctree-l2"><a class="reference internal" href="%E7%AC%AC%E4%BA%8C%E5%9B%9E%EF%BC%9A%E8%89%BA%E6%9C%AF%E7%94%BB%E7%AC%94%E8%A7%81%E4%B9%BE%E5%9D%A4/index.html#primitives">二、基本元素 - primitives</a></li>
<li class="toctree-l2"><a class="reference internal" href="%E7%AC%AC%E4%BA%8C%E5%9B%9E%EF%BC%9A%E8%89%BA%E6%9C%AF%E7%94%BB%E7%AC%94%E8%A7%81%E4%B9%BE%E5%9D%A4/index.html#object-container">三、对象容器 - Object container</a></li> <li class="toctree-l2"><a class="reference internal" href="%E7%AC%AC%E4%BA%8C%E5%9B%9E%EF%BC%9A%E8%89%BA%E6%9C%AF%E7%94%BB%E7%AC%94%E8%A7%81%E4%B9%BE%E5%9D%A4/index.html#object-container">三、对象容器 - Object container</a></li>
<li class="toctree-l2"><a class="reference internal" href="%E7%AC%AC%E4%BA%8C%E5%9B%9E%EF%BC%9A%E8%89%BA%E6%9C%AF%E7%94%BB%E7%AC%94%E8%A7%81%E4%B9%BE%E5%9D%A4/index.html#id3">参考资料</a></li> <li class="toctree-l2"><a class="reference internal" href="%E7%AC%AC%E4%BA%8C%E5%9B%9E%EF%BC%9A%E8%89%BA%E6%9C%AF%E7%94%BB%E7%AC%94%E8%A7%81%E4%B9%BE%E5%9D%A4/index.html#id3">思考题</a></li>
<li class="toctree-l2"><a class="reference internal" href="%E7%AC%AC%E4%BA%8C%E5%9B%9E%EF%BC%9A%E8%89%BA%E6%9C%AF%E7%94%BB%E7%AC%94%E8%A7%81%E4%B9%BE%E5%9D%A4/index.html#id4">参考资料</a></li>
</ul> </ul>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="%E7%AC%AC%E4%B8%89%E5%9B%9E%EF%BC%9A%E5%B8%83%E5%B1%80%E6%A0%BC%E5%BC%8F%E5%AE%9A%E6%96%B9%E5%9C%86/index.html">第三回:布局格式定方圆</a><ul> <li class="toctree-l1"><a class="reference internal" href="%E7%AC%AC%E4%B8%89%E5%9B%9E%EF%BC%9A%E5%B8%83%E5%B1%80%E6%A0%BC%E5%BC%8F%E5%AE%9A%E6%96%B9%E5%9C%86/index.html">第三回:布局格式定方圆</a><ul>
@ -247,9 +248,9 @@
<div class="container"> <div class="container">
<p> <p>
By Datawhale<br/> By Datawhale数据可视化开源小组<br/>
&copy; Copyright © Copyright 2020.<br/> &copy; Copyright © Copyright 2021.<br/>
</p> </p>
</div> </div>
</footer> </footer>

View File

@ -209,9 +209,9 @@
<div class="container"> <div class="container">
<p> <p>
By Datawhale<br/> By Datawhale数据可视化开源小组<br/>
&copy; Copyright © Copyright 2020.<br/> &copy; Copyright © Copyright 2021.<br/>
</p> </p>
</div> </div>
</footer> </footer>

File diff suppressed because one or more lines are too long

View File

@ -397,9 +397,9 @@
<div class="container"> <div class="container">
<p> <p>
By Datawhale<br/> By Datawhale数据可视化开源小组<br/>
&copy; Copyright © Copyright 2020.<br/> &copy; Copyright © Copyright 2021.<br/>
</p> </p>
</div> </div>
</footer> </footer>

View File

@ -473,9 +473,9 @@
<div class="container"> <div class="container">
<p> <p>
By Datawhale<br/> By Datawhale数据可视化开源小组<br/>
&copy; Copyright © Copyright 2020.<br/> &copy; Copyright © Copyright 2021.<br/>
</p> </p>
</div> </div>
</footer> </footer>

View File

@ -201,11 +201,6 @@
2. Artist的分类 2. Artist的分类
</a> </a>
</li> </li>
<li class="toc-h3 nav-item toc-entry">
<a class="reference internal nav-link" href="#matplotlib">
3. matplotlib标准用法
</a>
</li>
</ul> </ul>
</li> </li>
<li class="toc-h2 nav-item toc-entry"> <li class="toc-h2 nav-item toc-entry">
@ -293,6 +288,11 @@
</li> </li>
<li class="toc-h2 nav-item toc-entry"> <li class="toc-h2 nav-item toc-entry">
<a class="reference internal nav-link" href="#id3"> <a class="reference internal nav-link" href="#id3">
思考题
</a>
</li>
<li class="toc-h2 nav-item toc-entry">
<a class="reference internal nav-link" href="#id4">
参考资料 参考资料
</a> </a>
</li> </li>
@ -307,7 +307,21 @@
<div> <div>
<div class="section" id="id1"> <div class="cell docutils container">
<div class="cell_input docutils container">
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
<span class="kn">import</span> <span class="nn">re</span>
<span class="kn">import</span> <span class="nn">matplotlib</span>
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
<span class="kn">from</span> <span class="nn">matplotlib.lines</span> <span class="kn">import</span> <span class="n">Line2D</span>
<span class="kn">from</span> <span class="nn">matplotlib.patches</span> <span class="kn">import</span> <span class="n">Circle</span><span class="p">,</span> <span class="n">Wedge</span>
<span class="kn">from</span> <span class="nn">matplotlib.collections</span> <span class="kn">import</span> <span class="n">PatchCollection</span>
</pre></div>
</div>
</div>
</div>
<div class="section" id="id1">
<h1>第二回:艺术画笔见乾坤<a class="headerlink" href="#id1" title="永久链接至标题"></a></h1> <h1>第二回:艺术画笔见乾坤<a class="headerlink" href="#id1" title="永久链接至标题"></a></h1>
<div class="section" id="id2"> <div class="section" id="id2">
<h2>一、概述<a class="headerlink" href="#id2" title="永久链接至标题"></a></h2> <h2>一、概述<a class="headerlink" href="#id2" title="永久链接至标题"></a></h2>
@ -332,52 +346,58 @@
<p><code class="docutils literal notranslate"><span class="pre">primitive</span></code>是基本要素,它包含一些我们要在绘图区作图用到的标准图形对象,如<strong>曲线Line2D文字text矩形Rectangle图像image</strong>等。</p> <p><code class="docutils literal notranslate"><span class="pre">primitive</span></code>是基本要素,它包含一些我们要在绘图区作图用到的标准图形对象,如<strong>曲线Line2D文字text矩形Rectangle图像image</strong>等。</p>
<p><code class="docutils literal notranslate"><span class="pre">container</span></code>是容器,即用来装基本要素的地方,包括<strong>图形figure、坐标系Axes和坐标轴Axis</strong>。他们之间的关系如下图所示:<br /> <p><code class="docutils literal notranslate"><span class="pre">container</span></code>是容器,即用来装基本要素的地方,包括<strong>图形figure、坐标系Axes和坐标轴Axis</strong>。他们之间的关系如下图所示:<br />
<img alt="分类" src="https://img-blog.csdnimg.cn/20201122230916134.jpeg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zODYwNDk2MQ==,size_16,color_FFFFFF,t_70#pic_center" /></p> <img alt="分类" src="https://img-blog.csdnimg.cn/20201122230916134.jpeg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zODYwNDk2MQ==,size_16,color_FFFFFF,t_70#pic_center" /></p>
</div> <p>可视化中常见的artist类可以参考下图这张表格解释下每一列的含义。<br />
<div class="section" id="matplotlib"> 第一列表示matplotlib中子图上的辅助方法可以理解为可视化中不同种类的图表类型如柱状图折线图直方图等这些图表都可以用这些辅助方法直接画出来属于更高层级的抽象。</p>
<h3>3. matplotlib标准用法<a class="headerlink" href="#matplotlib" title="永久链接至标题"></a></h3> <p>第二列表示不同图表背后的artist类比如折线图方法<code class="docutils literal notranslate"><span class="pre">plot</span></code>在底层用到的就是<code class="docutils literal notranslate"><span class="pre">Line2D</span></code>这一artist类。</p>
<p>matplotlib的标准使用流程为</p> <p>第三列是第二列的列表容器,例如所有在子图中创建的<code class="docutils literal notranslate"><span class="pre">Line2D</span></code>对象都会被自动收集到<code class="docutils literal notranslate"><span class="pre">ax.lines</span></code>返回的列表中。</p>
<ol class="simple"> <p>下一节的具体案例更清楚地阐释了这三者的关系,其实在很多时候,我们只用记住第一列的辅助方法进行绘图即可,而无需关注具体底层使用了哪些类,但是了解底层类有助于我们绘制一些复杂的图表,因此也很有必要了解。</p>
<li><p>创建一个<code class="docutils literal notranslate"><span class="pre">Figure</span></code>实例</p></li> <table class="colwidths-auto table">
<li><p>使用<code class="docutils literal notranslate"><span class="pre">Figure</span></code>实例创建一个或者多个<code class="docutils literal notranslate"><span class="pre">Axes</span></code><code class="docutils literal notranslate"><span class="pre">Subplot</span></code>实例</p></li> <thead>
<li><p>使用<code class="docutils literal notranslate"><span class="pre">Axes</span></code>实例的辅助方法来创建<code class="docutils literal notranslate"><span class="pre">primitive</span></code></p></li> <tr class="row-odd"><th class="head"><p>Axes helper method</p></th>
</ol> <th class="head"><p>Artist</p></th>
<p>值得一提的是Axes是一种容器它可能是matplotlib API中最重要的类并且我们大多数时间都花在和它打交道上。更具体的信息会在第三节容器小节说明。</p> <th class="head"><p>Container</p></th>
<p>一个流程示例及说明如下:</p> </tr>
<div class="cell docutils container"> </thead>
<div class="cell_input docutils container"> <tbody>
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span> <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">bar</span></code> - bar charts</p></td>
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span> <td><p><code class="docutils literal notranslate"><span class="pre">Rectangle</span></code></p></td>
<td><p>ax.patches</p></td>
<span class="c1"># step 1 </span> </tr>
<span class="c1"># 我们用 matplotlib.pyplot.figure() 创建了一个Figure实例</span> <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">errorbar</span></code> - error bar plots</p></td>
<span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span> <td><p><code class="docutils literal notranslate"><span class="pre">Line2D</span></code> and <code class="docutils literal notranslate"><span class="pre">Rectangle</span></code></p></td>
<td><p>ax.lines and ax.patches</p></td>
<span class="c1"># step 2</span> </tr>
<span class="c1"># 然后用Figure实例创建了一个两行一列(即可以有两个subplot)的绘图区并同时在第一个位置创建了一个subplot</span> <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">fill</span></code> - shared area</p></td>
<span class="n">ax</span> <span class="o">=</span> <span class="n">fig</span><span class="o">.</span><span class="n">add_subplot</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> <span class="c1"># two rows, one column, first plot</span> <td><p><code class="docutils literal notranslate"><span class="pre">Polygon</span></code></p></td>
<td><p>ax.patches</p></td>
<span class="c1"># step 3</span> </tr>
<span class="c1"># 然后用Axes实例的方法画了一条曲线</span> <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">hist</span></code> - histograms</p></td>
<span class="n">t</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">,</span> <span class="mf">0.01</span><span class="p">)</span> <td><p><code class="docutils literal notranslate"><span class="pre">Rectangle</span></code></p></td>
<span class="n">s</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">pi</span><span class="o">*</span><span class="n">t</span><span class="p">)</span> <td><p>ax.patches</p></td>
<span class="n">line</span><span class="p">,</span> <span class="o">=</span> <span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">t</span><span class="p">,</span> <span class="n">s</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s1">&#39;blue&#39;</span><span class="p">,</span> <span class="n">lw</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span> </tr>
</pre></div> <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">imshow</span></code> - image data</p></td>
</div> <td><p><code class="docutils literal notranslate"><span class="pre">AxesImage</span></code></p></td>
</div> <td><p>ax.images</p></td>
<div class="cell_output docutils container"> </tr>
<img alt="../_images/index_1_0.png" src="../_images/index_1_0.png" /> <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">plot</span></code> - xy plots</p></td>
</div> <td><p><code class="docutils literal notranslate"><span class="pre">Line2D</span></code></p></td>
</div> <td><p>ax.lines</p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">scatter</span></code> - scatter charts</p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">PolyCollection</span></code></p></td>
<td><p>ax.collections</p></td>
</tr>
</tbody>
</table>
</div> </div>
</div> </div>
<div class="section" id="primitives"> <div class="section" id="primitives">
<h2>二、基本元素 - primitives<a class="headerlink" href="#primitives" title="永久链接至标题"></a></h2> <h2>二、基本元素 - primitives<a class="headerlink" href="#primitives" title="永久链接至标题"></a></h2>
<p>各容器中可能会包含多种<code class="docutils literal notranslate"><span class="pre">基本要素-primitives</span></code>, 所以先介绍下primitives再介绍容器。</p> <p>各容器中可能会包含多种<code class="docutils literal notranslate"><span class="pre">基本要素-primitives</span></code>, 所以先介绍下primitives再介绍容器。</p>
<p>本章重点介绍下 <code class="docutils literal notranslate"><span class="pre">primitives</span></code> 的几种类型:<strong>曲线-Line2D矩形-Rectangle图像-image</strong> (其中文本-Text较为复杂会在之后单独详细说明。</p> <p>本章重点介绍下 <code class="docutils literal notranslate"><span class="pre">primitives</span></code> 的几种类型:<strong>曲线-Line2D矩形-Rectangle多边形-Polygon图像-image</strong></p>
<div class="section" id="dlines"> <div class="section" id="dlines">
<h3>1. 2DLines<a class="headerlink" href="#dlines" title="永久链接至标题"></a></h3> <h3>1. 2DLines<a class="headerlink" href="#dlines" title="永久链接至标题"></a></h3>
<p>在matplotlib中曲线的绘制主要是通过类 <code class="docutils literal notranslate"><span class="pre">matplotlib.lines.Line2D</span></code> 来完成的。<br /> <p>在matplotlib中曲线的绘制主要是通过类 <code class="docutils literal notranslate"><span class="pre">matplotlib.lines.Line2D</span></code> 来完成的。</p>
它的基类: <code class="docutils literal notranslate"><span class="pre">matplotlib.artist.Artist</span></code></p>
<p>matplotlib中<code class="docutils literal notranslate"><span class="pre">线-line</span></code>的含义:它表示的可以是连接所有顶点的实线样式,也可以是每个顶点的标记。此外,这条线也会受到绘画风格的影响,比如,我们可以创建虚线种类的线。</p> <p>matplotlib中<code class="docutils literal notranslate"><span class="pre">线-line</span></code>的含义:它表示的可以是连接所有顶点的实线样式,也可以是每个顶点的标记。此外,这条线也会受到绘画风格的影响,比如,我们可以创建虚线种类的线。</p>
<p>它的构造函数:</p> <p>它的构造函数:</p>
<blockquote> <blockquote>
@ -393,7 +413,7 @@
<li><p><strong>marker</strong>:点的标记,详细可参考<a class="reference external" href="https://matplotlib.org/api/markers_api.html#module-matplotlib.markers">markers API</a></p></li> <li><p><strong>marker</strong>:点的标记,详细可参考<a class="reference external" href="https://matplotlib.org/api/markers_api.html#module-matplotlib.markers">markers API</a></p></li>
<li><p><strong>markersize</strong>:标记的size</p></li> <li><p><strong>markersize</strong>:标记的size</p></li>
</ul> </ul>
<p>其他详细参数可参考<a class="reference external" href="https://matplotlib.org/api/_as_gen/matplotlib.lines.Line2D.html#examples-using-matplotlib-lines-line2d">Line2D官方文档</a></p> <p>其他详细参数可参考<a class="reference external" href="https://matplotlib.org/stable/api/_as_gen/matplotlib.lines.Line2D.html">Line2D官方文档</a></p>
<div class="section" id="a-line2d"> <div class="section" id="a-line2d">
<h4>a. 如何设置Line2D的属性<a class="headerlink" href="#a-line2d" title="永久链接至标题"></a></h4> <h4>a. 如何设置Line2D的属性<a class="headerlink" href="#a-line2d" title="永久链接至标题"></a></h4>
<p>有三种方法可以用设置线的属性。</p> <p>有三种方法可以用设置线的属性。</p>
@ -405,7 +425,6 @@
<div class="cell docutils container"> <div class="cell docutils container">
<div class="cell_input docutils container"> <div class="cell_input docutils container">
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># 1) 直接在plot()函数中设置</span> <div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># 1) 直接在plot()函数中设置</span>
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
<span class="n">x</span> <span class="o">=</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">5</span><span class="p">)</span> <span class="n">x</span> <span class="o">=</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">5</span><span class="p">)</span>
<span class="n">y</span> <span class="o">=</span> <span class="p">[</span><span class="mi">2</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">7</span><span class="p">,</span><span class="mi">8</span><span class="p">,</span><span class="mi">10</span><span class="p">]</span> <span class="n">y</span> <span class="o">=</span> <span class="p">[</span><span class="mi">2</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">7</span><span class="p">,</span><span class="mi">8</span><span class="p">,</span><span class="mi">10</span><span class="p">]</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mi">10</span><span class="p">);</span> <span class="c1"># 设置线的粗细参数为10</span> <span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mi">10</span><span class="p">);</span> <span class="c1"># 设置线的粗细参数为10</span>
@ -413,7 +432,7 @@
</div> </div>
</div> </div>
<div class="cell_output docutils container"> <div class="cell_output docutils container">
<img alt="../_images/index_3_01.png" src="../_images/index_3_01.png" /> <img alt="../_images/index_2_01.png" src="../_images/index_2_01.png" />
</div> </div>
</div> </div>
<div class="cell docutils container"> <div class="cell docutils container">
@ -421,13 +440,13 @@
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># 2) 通过获得线对象,对线对象进行设置</span> <div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># 2) 通过获得线对象,对线对象进行设置</span>
<span class="n">x</span> <span class="o">=</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">5</span><span class="p">)</span> <span class="n">x</span> <span class="o">=</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">5</span><span class="p">)</span>
<span class="n">y</span> <span class="o">=</span> <span class="p">[</span><span class="mi">2</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">7</span><span class="p">,</span><span class="mi">8</span><span class="p">,</span><span class="mi">10</span><span class="p">]</span> <span class="n">y</span> <span class="o">=</span> <span class="p">[</span><span class="mi">2</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">7</span><span class="p">,</span><span class="mi">8</span><span class="p">,</span><span class="mi">10</span><span class="p">]</span>
<span class="n">line</span><span class="p">,</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="s1">&#39;-&#39;</span><span class="p">)</span> <span class="n">line</span><span class="p">,</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="s1">&#39;-&#39;</span><span class="p">)</span> <span class="c1"># 这里等号坐标的line,是一个列表解包的操作目的是获取plt.plot返回列表中的Line2D对象</span>
<span class="n">line</span><span class="o">.</span><span class="n">set_antialiased</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span> <span class="c1"># 关闭抗锯齿功能</span> <span class="n">line</span><span class="o">.</span><span class="n">set_antialiased</span><span class="p">(</span><span class="kc">False</span><span class="p">);</span> <span class="c1"># 关闭抗锯齿功能</span>
</pre></div> </pre></div>
</div> </div>
</div> </div>
<div class="cell_output docutils container"> <div class="cell_output docutils container">
<img alt="../_images/index_4_01.png" src="../_images/index_4_01.png" /> <img alt="../_images/index_3_01.png" src="../_images/index_3_01.png" />
</div> </div>
</div> </div>
<div class="cell docutils container"> <div class="cell docutils container">
@ -441,7 +460,7 @@
</div> </div>
</div> </div>
<div class="cell_output docutils container"> <div class="cell_output docutils container">
<img alt="../_images/index_5_01.png" src="../_images/index_5_01.png" /> <img alt="../_images/index_4_01.png" src="../_images/index_4_01.png" />
</div> </div>
</div> </div>
</div> </div>
@ -451,18 +470,45 @@
<li><p>绘制直线line</p></li> <li><p>绘制直线line</p></li>
<li><p>errorbar绘制误差折线图</p></li> <li><p>errorbar绘制误差折线图</p></li>
</ol> </ol>
<p>绘制直线line常用的方法有两种:</p> <p>介绍两种绘制直线line常用的方法:</p>
<ul class="simple"> <ul class="simple">
<li><p><strong>pyplot方法绘制</strong></p></li> <li><p><strong>plot方法绘制</strong></p></li>
<li><p><strong>Line2D对象绘制</strong></p></li> <li><p><strong>Line2D对象绘制</strong></p></li>
</ul> </ul>
<div class="cell docutils container"> <div class="cell docutils container">
<div class="cell_input docutils container"> <div class="cell_input docutils container">
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># 1. pyplot方法绘制</span> <div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># 1. plot方法绘制</span>
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
<span class="n">x</span> <span class="o">=</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">5</span><span class="p">)</span> <span class="n">x</span> <span class="o">=</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">5</span><span class="p">)</span>
<span class="n">y</span> <span class="o">=</span> <span class="p">[</span><span class="mi">2</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">7</span><span class="p">,</span><span class="mi">8</span><span class="p">,</span><span class="mi">10</span><span class="p">]</span> <span class="n">y1</span> <span class="o">=</span> <span class="p">[</span><span class="mi">2</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">7</span><span class="p">,</span><span class="mi">8</span><span class="p">,</span><span class="mi">10</span><span class="p">]</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">);</span> <span class="n">y2</span><span class="o">=</span> <span class="p">[</span><span class="mi">3</span><span class="p">,</span><span class="mi">6</span><span class="p">,</span><span class="mi">8</span><span class="p">,</span><span class="mi">9</span><span class="p">,</span><span class="mi">11</span><span class="p">]</span>
<span class="n">fig</span><span class="p">,</span><span class="n">ax</span><span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">()</span>
<span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="n">y1</span><span class="p">)</span>
<span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="n">y2</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">ax</span><span class="o">.</span><span class="n">lines</span><span class="p">);</span> <span class="c1"># 通过直接使用辅助方法画线打印ax.lines后可以看到在matplotlib在底层创建了两个Line2D对象</span>
</pre></div>
</div>
</div>
<div class="cell_output docutils container">
<div class="output stream highlight-myst-ansi notranslate"><div class="highlight"><pre><span></span>[&lt;matplotlib.lines.Line2D object at 0x000001EBFE710A90&gt;, &lt;matplotlib.lines.Line2D object at 0x000001EBFE710E20&gt;]
</pre></div>
</div>
<img alt="../_images/index_6_1.png" src="../_images/index_6_1.png" />
</div>
</div>
<div class="cell docutils container">
<div class="cell_input docutils container">
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># 2. Line2D对象绘制</span>
<span class="n">x</span> <span class="o">=</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">5</span><span class="p">)</span>
<span class="n">y1</span> <span class="o">=</span> <span class="p">[</span><span class="mi">2</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">7</span><span class="p">,</span><span class="mi">8</span><span class="p">,</span><span class="mi">10</span><span class="p">]</span>
<span class="n">y2</span><span class="o">=</span> <span class="p">[</span><span class="mi">3</span><span class="p">,</span><span class="mi">6</span><span class="p">,</span><span class="mi">8</span><span class="p">,</span><span class="mi">9</span><span class="p">,</span><span class="mi">11</span><span class="p">]</span>
<span class="n">fig</span><span class="p">,</span><span class="n">ax</span><span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">()</span>
<span class="n">lines</span> <span class="o">=</span> <span class="p">[</span><span class="n">Line2D</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y1</span><span class="p">),</span> <span class="n">Line2D</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y2</span><span class="p">,</span><span class="n">color</span><span class="o">=</span><span class="s1">&#39;orange&#39;</span><span class="p">)]</span> <span class="c1"># 显式创建Line2D对象</span>
<span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">lines</span><span class="p">:</span>
<span class="n">ax</span><span class="o">.</span><span class="n">add_line</span><span class="p">(</span><span class="n">line</span><span class="p">)</span> <span class="c1"># 使用add_line方法将创建的Line2D添加到子图中</span>
<span class="n">ax</span><span class="o">.</span><span class="n">set_xlim</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">4</span><span class="p">)</span>
<span class="n">ax</span><span class="o">.</span><span class="n">set_ylim</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">11</span><span class="p">);</span>
</pre></div> </pre></div>
</div> </div>
</div> </div>
@ -470,27 +516,8 @@
<img alt="../_images/index_7_01.png" src="../_images/index_7_01.png" /> <img alt="../_images/index_7_01.png" src="../_images/index_7_01.png" />
</div> </div>
</div> </div>
<div class="cell docutils container"> <p><br />
<div class="cell_input docutils container"> </p>
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># 2. Line2D对象绘制</span>
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
<span class="kn">from</span> <span class="nn">matplotlib.lines</span> <span class="kn">import</span> <span class="n">Line2D</span>
<span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span>
<span class="n">ax</span> <span class="o">=</span> <span class="n">fig</span><span class="o">.</span><span class="n">add_subplot</span><span class="p">(</span><span class="mi">111</span><span class="p">)</span>
<span class="n">line</span> <span class="o">=</span> <span class="n">Line2D</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
<span class="n">ax</span><span class="o">.</span><span class="n">add_line</span><span class="p">(</span><span class="n">line</span><span class="p">)</span>
<span class="n">ax</span><span class="o">.</span><span class="n">set_xlim</span><span class="p">(</span><span class="nb">min</span><span class="p">(</span><span class="n">x</span><span class="p">),</span> <span class="nb">max</span><span class="p">(</span><span class="n">x</span><span class="p">))</span>
<span class="n">ax</span><span class="o">.</span><span class="n">set_ylim</span><span class="p">(</span><span class="nb">min</span><span class="p">(</span><span class="n">y</span><span class="p">),</span> <span class="nb">max</span><span class="p">(</span><span class="n">y</span><span class="p">))</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre></div>
</div>
</div>
<div class="cell_output docutils container">
<img alt="../_images/index_8_01.png" src="../_images/index_8_01.png" />
</div>
</div>
<p><strong>2) errorbar绘制误差折线图</strong><br /> <p><strong>2) errorbar绘制误差折线图</strong><br />
pyplot里有个专门绘制误差线的功能通过<code class="docutils literal notranslate"><span class="pre">errorbar</span></code>类实现,它的构造函数:</p> pyplot里有个专门绘制误差线的功能通过<code class="docutils literal notranslate"><span class="pre">errorbar</span></code>类实现,它的构造函数:</p>
<blockquote> <blockquote>
@ -509,9 +536,7 @@ pyplot里有个专门绘制误差线的功能通过<code class="docutils lite
<p>绘制errorbar</p> <p>绘制errorbar</p>
<div class="cell docutils container"> <div class="cell docutils container">
<div class="cell_input docutils container"> <div class="cell_input docutils container">
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span> <div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span>
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
<span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span>
<span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span> <span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
<span class="n">y</span> <span class="o">=</span> <span class="mf">2.5</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">x</span> <span class="o">/</span> <span class="mi">20</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">pi</span><span class="p">)</span> <span class="n">y</span> <span class="o">=</span> <span class="mf">2.5</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">x</span> <span class="o">/</span> <span class="mi">20</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">pi</span><span class="p">)</span>
<span class="n">yerr</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mf">0.05</span><span class="p">,</span> <span class="mf">0.2</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span> <span class="n">yerr</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mf">0.05</span><span class="p">,</span> <span class="mf">0.2</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span>
@ -520,21 +545,24 @@ pyplot里有个专门绘制误差线的功能通过<code class="docutils lite
</div> </div>
</div> </div>
<div class="cell_output docutils container"> <div class="cell_output docutils container">
<img alt="../_images/index_10_01.png" src="../_images/index_10_01.png" /> <img alt="../_images/index_9_01.png" src="../_images/index_9_01.png" />
</div> </div>
</div> </div>
<p><br />
</p>
</div> </div>
</div> </div>
<div class="section" id="patches"> <div class="section" id="patches">
<h3>2. patches<a class="headerlink" href="#patches" title="永久链接至标题"></a></h3> <h3>2. patches<a class="headerlink" href="#patches" title="永久链接至标题"></a></h3>
<p>matplotlib.patches.Patch类是二维图形类。它的基类是matplotlib.artist.Artist它的构造函数<br /> <p>matplotlib.patches.Patch类是二维图形类,并且它是众多二维图形的父类,它的所有子类见<a class="reference external" href="https://matplotlib.org/stable/api/patches_api.html">matplotlib.patches API</a> <br />
详细清单见 <a class="reference external" href="https://matplotlib.org/api/patches_api.html">matplotlib.patches API</a></p> Patch类的构造函数</p>
<blockquote> <blockquote>
<div><p>Patch(edgecolor=None, facecolor=None, color=None, <div><p>Patch(edgecolor=None, facecolor=None, color=None,
linewidth=None, linestyle=None, antialiased=None, linewidth=None, linestyle=None, antialiased=None,
hatch=None, fill=True, capstyle=None, joinstyle=None, hatch=None, fill=True, capstyle=None, joinstyle=None,
**kwargs)</p> **kwargs)</p>
</div></blockquote> </div></blockquote>
<p>本小节重点讲述三种最常见的子类,矩形,多边形和楔型。</p>
<div class="section" id="a-rectangle"> <div class="section" id="a-rectangle">
<h4>a. Rectangle-矩形<a class="headerlink" href="#a-rectangle" title="永久链接至标题"></a></h4> <h4>a. Rectangle-矩形<a class="headerlink" href="#a-rectangle" title="永久链接至标题"></a></h4>
<p><code class="docutils literal notranslate"><span class="pre">Rectangle</span></code>矩形类在官网中的定义是: 通过锚点xy及其宽度和高度生成。 <p><code class="docutils literal notranslate"><span class="pre">Rectangle</span></code>矩形类在官网中的定义是: 通过锚点xy及其宽度和高度生成。
@ -542,7 +570,7 @@ Rectangle本身的主要比较简单即xy控制锚点width和height分别
<blockquote> <blockquote>
<div><p>class matplotlib.patches.Rectangle(xy, width, height, angle=0.0, **kwargs)</p> <div><p>class matplotlib.patches.Rectangle(xy, width, height, angle=0.0, **kwargs)</p>
</div></blockquote> </div></blockquote>
<p>在实际中最常见的矩形图是**<code class="docutils literal notranslate"><span class="pre">hist直方图</span></code><code class="docutils literal notranslate"><span class="pre">bar条形图</span></code>**</p> <p>在实际中最常见的矩形图是<code class="docutils literal notranslate"><span class="pre">hist直方图</span></code><code class="docutils literal notranslate"><span class="pre">bar条形图</span></code></p>
<p><strong>1) hist-直方图</strong></p> <p><strong>1) hist-直方图</strong></p>
<blockquote> <blockquote>
<div><p>matplotlib.pyplot.hist(x,bins=None,range=None, density=None, bottom=None, histtype='bar', align='mid', log=False, color=None, label=None, stacked=False, normed=None)</p> <div><p>matplotlib.pyplot.hist(x,bins=None,range=None, density=None, bottom=None, histtype='bar', align='mid', log=False, color=None, label=None, stacked=False, normed=None)</p>
@ -561,28 +589,24 @@ Rectangle本身的主要比较简单即xy控制锚点width和height分别
<p>hist绘制直方图</p> <p>hist绘制直方图</p>
<div class="cell docutils container"> <div class="cell docutils container">
<div class="cell_input docutils container"> <div class="cell_input docutils container">
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span> <div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">x</span><span class="o">=</span><span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">100</span><span class="p">,</span><span class="mi">100</span><span class="p">)</span> <span class="c1">#生成[0-100)之间的100个数据,即 数据集 </span>
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="n">x</span><span class="o">=</span><span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">100</span><span class="p">,</span><span class="mi">100</span><span class="p">)</span> <span class="c1">#生成[0-100)之间的100个数据,即 数据集 </span>
<span class="n">bins</span><span class="o">=</span><span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">101</span><span class="p">,</span><span class="mi">10</span><span class="p">)</span> <span class="c1">#设置连续的边界值,即直方图的分布区间[0,10),[10,20)... </span> <span class="n">bins</span><span class="o">=</span><span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">101</span><span class="p">,</span><span class="mi">10</span><span class="p">)</span> <span class="c1">#设置连续的边界值,即直方图的分布区间[0,10),[10,20)... </span>
<span class="n">plt</span><span class="o">.</span><span class="n">hist</span><span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="n">bins</span><span class="p">,</span><span class="n">color</span><span class="o">=</span><span class="s1">&#39;fuchsia&#39;</span><span class="p">,</span><span class="n">alpha</span><span class="o">=</span><span class="mf">0.5</span><span class="p">)</span><span class="c1">#alpha设置透明度0为完全透明 </span> <span class="n">plt</span><span class="o">.</span><span class="n">hist</span><span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="n">bins</span><span class="p">,</span><span class="n">color</span><span class="o">=</span><span class="s1">&#39;fuchsia&#39;</span><span class="p">,</span><span class="n">alpha</span><span class="o">=</span><span class="mf">0.5</span><span class="p">)</span><span class="c1">#alpha设置透明度0为完全透明 </span>
<span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s1">&#39;scores&#39;</span><span class="p">)</span> <span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s1">&#39;scores&#39;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s1">&#39;count&#39;</span><span class="p">)</span> <span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s1">&#39;count&#39;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">xlim</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">100</span><span class="p">)</span><span class="c1">#设置x轴分布范围 </span> <span class="n">plt</span><span class="o">.</span><span class="n">xlim</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">100</span><span class="p">);</span> <span class="c1">#设置x轴分布范围 plt.show()</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre></div> </pre></div>
</div> </div>
</div> </div>
<div class="cell_output docutils container"> <div class="cell_output docutils container">
<img alt="../_images/index_12_0.png" src="../_images/index_12_0.png" /> <img alt="../_images/index_11_01.png" src="../_images/index_11_01.png" />
</div> </div>
</div> </div>
<p></p>
<p><code class="docutils literal notranslate"><span class="pre">Rectangle</span></code>矩形类绘制直方图</p> <p><code class="docutils literal notranslate"><span class="pre">Rectangle</span></code>矩形类绘制直方图</p>
<div class="cell docutils container"> <div class="cell docutils container">
<div class="cell_input docutils container"> <div class="cell_input docutils container">
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span> <div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">df</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span><span class="n">columns</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;data&#39;</span><span class="p">])</span>
<span class="kn">import</span> <span class="nn">re</span>
<span class="n">df</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span><span class="n">columns</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;data&#39;</span><span class="p">])</span>
<span class="n">df</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="s1">&#39;data&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">x</span> <span class="n">df</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="s1">&#39;data&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">x</span>
<span class="n">df</span><span class="p">[</span><span class="s1">&#39;fenzu&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">cut</span><span class="p">(</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;data&#39;</span><span class="p">],</span> <span class="n">bins</span><span class="o">=</span><span class="n">bins</span><span class="p">,</span> <span class="n">right</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span><span class="n">include_lowest</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="n">df</span><span class="p">[</span><span class="s1">&#39;fenzu&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">cut</span><span class="p">(</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;data&#39;</span><span class="p">],</span> <span class="n">bins</span><span class="o">=</span><span class="n">bins</span><span class="p">,</span> <span class="n">right</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span><span class="n">include_lowest</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
@ -594,7 +618,6 @@ Rectangle本身的主要比较简单即xy控制锚点width和height分别
<span class="n">df_cnt</span><span class="o">.</span><span class="n">reset_index</span><span class="p">(</span><span class="n">inplace</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span><span class="n">drop</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="n">df_cnt</span><span class="o">.</span><span class="n">reset_index</span><span class="p">(</span><span class="n">inplace</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span><span class="n">drop</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span>
<span class="c1">#用Rectangle把hist绘制出来</span> <span class="c1">#用Rectangle把hist绘制出来</span>
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
<span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span> <span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span>
<span class="n">ax1</span> <span class="o">=</span> <span class="n">fig</span><span class="o">.</span><span class="n">add_subplot</span><span class="p">(</span><span class="mi">111</span><span class="p">)</span> <span class="n">ax1</span> <span class="o">=</span> <span class="n">fig</span><span class="o">.</span><span class="n">add_subplot</span><span class="p">(</span><span class="mi">111</span><span class="p">)</span>
@ -604,15 +627,16 @@ Rectangle本身的主要比较简单即xy控制锚点width和height分别
<span class="n">ax1</span><span class="o">.</span><span class="n">add_patch</span><span class="p">(</span><span class="n">rect</span><span class="p">)</span> <span class="n">ax1</span><span class="o">.</span><span class="n">add_patch</span><span class="p">(</span><span class="n">rect</span><span class="p">)</span>
<span class="n">ax1</span><span class="o">.</span><span class="n">set_xlim</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">100</span><span class="p">)</span> <span class="n">ax1</span><span class="o">.</span><span class="n">set_xlim</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">100</span><span class="p">)</span>
<span class="n">ax1</span><span class="o">.</span><span class="n">set_ylim</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">16</span><span class="p">)</span> <span class="n">ax1</span><span class="o">.</span><span class="n">set_ylim</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">16</span><span class="p">);</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre></div> </pre></div>
</div> </div>
</div> </div>
<div class="cell_output docutils container"> <div class="cell_output docutils container">
<img alt="../_images/index_14_0.png" src="../_images/index_14_0.png" /> <img alt="../_images/index_13_01.png" src="../_images/index_13_01.png" />
</div> </div>
</div> </div>
<p></p>
<p></p>
<p><strong>2) bar-柱状图</strong></p> <p><strong>2) bar-柱状图</strong></p>
<blockquote> <blockquote>
<div><p>matplotlib.pyplot.bar(left, height, alpha=1, width=0.8, color=, edgecolor=, label=, lw=3)</p> <div><p>matplotlib.pyplot.bar(left, height, alpha=1, width=0.8, color=, edgecolor=, label=, lw=3)</p>
@ -635,20 +659,19 @@ Rectangle本身的主要比较简单即xy控制锚点width和height分别
<div class="cell docutils container"> <div class="cell docutils container">
<div class="cell_input docutils container"> <div class="cell_input docutils container">
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># bar绘制柱状图</span> <div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># bar绘制柱状图</span>
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
<span class="n">y</span> <span class="o">=</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">17</span><span class="p">)</span> <span class="n">y</span> <span class="o">=</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">17</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">bar</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">16</span><span class="p">),</span> <span class="n">y</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s1">&#39;yellow&#39;</span><span class="p">,</span> <span class="n">edgecolor</span><span class="o">=</span><span class="s1">&#39;red&#39;</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s1">&#39;The First Bar&#39;</span><span class="p">,</span> <span class="n">lw</span><span class="o">=</span><span class="mi">3</span><span class="p">);</span> <span class="n">plt</span><span class="o">.</span><span class="n">bar</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">16</span><span class="p">),</span> <span class="n">y</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s1">&#39;yellow&#39;</span><span class="p">,</span> <span class="n">edgecolor</span><span class="o">=</span><span class="s1">&#39;red&#39;</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s1">&#39;The First Bar&#39;</span><span class="p">,</span> <span class="n">lw</span><span class="o">=</span><span class="mi">3</span><span class="p">);</span>
</pre></div> </pre></div>
</div> </div>
</div> </div>
<div class="cell_output docutils container"> <div class="cell_output docutils container">
<img alt="../_images/index_16_0.png" src="../_images/index_16_0.png" /> <img alt="../_images/index_15_01.png" src="../_images/index_15_01.png" />
</div> </div>
</div> </div>
<p></p>
<div class="cell docutils container"> <div class="cell docutils container">
<div class="cell_input docutils container"> <div class="cell_input docutils container">
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># Rectangle矩形类绘制柱状图</span> <div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># Rectangle矩形类绘制柱状图</span>
<span class="c1">#import matplotlib.pyplot as plt</span>
<span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span> <span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span>
<span class="n">ax1</span> <span class="o">=</span> <span class="n">fig</span><span class="o">.</span><span class="n">add_subplot</span><span class="p">(</span><span class="mi">111</span><span class="p">)</span> <span class="n">ax1</span> <span class="o">=</span> <span class="n">fig</span><span class="o">.</span><span class="n">add_subplot</span><span class="p">(</span><span class="mi">111</span><span class="p">)</span>
@ -656,8 +679,7 @@ Rectangle本身的主要比较简单即xy控制锚点width和height分别
<span class="n">rect</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">Rectangle</span><span class="p">((</span><span class="n">i</span><span class="o">+</span><span class="mf">0.25</span><span class="p">,</span><span class="mi">0</span><span class="p">),</span><span class="mf">0.5</span><span class="p">,</span><span class="n">i</span><span class="p">)</span> <span class="n">rect</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">Rectangle</span><span class="p">((</span><span class="n">i</span><span class="o">+</span><span class="mf">0.25</span><span class="p">,</span><span class="mi">0</span><span class="p">),</span><span class="mf">0.5</span><span class="p">,</span><span class="n">i</span><span class="p">)</span>
<span class="n">ax1</span><span class="o">.</span><span class="n">add_patch</span><span class="p">(</span><span class="n">rect</span><span class="p">)</span> <span class="n">ax1</span><span class="o">.</span><span class="n">add_patch</span><span class="p">(</span><span class="n">rect</span><span class="p">)</span>
<span class="n">ax1</span><span class="o">.</span><span class="n">set_xlim</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">16</span><span class="p">)</span> <span class="n">ax1</span><span class="o">.</span><span class="n">set_xlim</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">16</span><span class="p">)</span>
<span class="n">ax1</span><span class="o">.</span><span class="n">set_ylim</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">16</span><span class="p">)</span> <span class="n">ax1</span><span class="o">.</span><span class="n">set_ylim</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">16</span><span class="p">);</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre></div> </pre></div>
</div> </div>
</div> </div>
@ -665,10 +687,12 @@ Rectangle本身的主要比较简单即xy控制锚点width和height分别
<img alt="../_images/index_17_01.png" src="../_images/index_17_01.png" /> <img alt="../_images/index_17_01.png" src="../_images/index_17_01.png" />
</div> </div>
</div> </div>
<p></p>
<p></p>
</div> </div>
<div class="section" id="b-polygon"> <div class="section" id="b-polygon">
<h4>b. Polygon-多边形<a class="headerlink" href="#b-polygon" title="永久链接至标题"></a></h4> <h4>b. Polygon-多边形<a class="headerlink" href="#b-polygon" title="永久链接至标题"></a></h4>
<p>matplotlib.patches.Polygon类是多边形类。其基类是matplotlib.patches.Patch它的构造函数:</p> <p>matplotlib.patches.Polygon类是多边形类。它的构造函数</p>
<blockquote> <blockquote>
<div><p>class matplotlib.patches.Polygon(xy, closed=True, **kwargs)</p> <div><p>class matplotlib.patches.Polygon(xy, closed=True, **kwargs)</p>
</div></blockquote> </div></blockquote>
@ -682,7 +706,6 @@ closed为True则指定多边形将起点和终点重合从而显式关闭多边
<div class="cell docutils container"> <div class="cell docutils container">
<div class="cell_input docutils container"> <div class="cell_input docutils container">
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># 用fill来绘制图形</span> <div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># 用fill来绘制图形</span>
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
<span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">5</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">pi</span><span class="p">,</span> <span class="mi">1000</span><span class="p">)</span> <span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">5</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">pi</span><span class="p">,</span> <span class="mi">1000</span><span class="p">)</span>
<span class="n">y1</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="n">y1</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
<span class="n">y2</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="n">x</span><span class="p">)</span> <span class="n">y2</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="n">x</span><span class="p">)</span>
@ -694,6 +717,8 @@ closed为True则指定多边形将起点和终点重合从而显式关闭多边
<img alt="../_images/index_19_0.png" src="../_images/index_19_0.png" /> <img alt="../_images/index_19_0.png" src="../_images/index_19_0.png" />
</div> </div>
</div> </div>
<p></p>
<p></p>
</div> </div>
<div class="section" id="c-wedge"> <div class="section" id="c-wedge">
<h4>c. Wedge-契形<a class="headerlink" href="#c-wedge" title="永久链接至标题"></a></h4> <h4>c. Wedge-契形<a class="headerlink" href="#c-wedge" title="永久链接至标题"></a></h4>
@ -719,14 +744,12 @@ closed为True则指定多边形将起点和终点重合从而显式关闭多边
<p>pie绘制饼状图</p> <p>pie绘制饼状图</p>
<div class="cell docutils container"> <div class="cell docutils container">
<div class="cell_input docutils container"> <div class="cell_input docutils container">
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span> <div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">labels</span> <span class="o">=</span> <span class="s1">&#39;Frogs&#39;</span><span class="p">,</span> <span class="s1">&#39;Hogs&#39;</span><span class="p">,</span> <span class="s1">&#39;Dogs&#39;</span><span class="p">,</span> <span class="s1">&#39;Logs&#39;</span>
<span class="n">labels</span> <span class="o">=</span> <span class="s1">&#39;Frogs&#39;</span><span class="p">,</span> <span class="s1">&#39;Hogs&#39;</span><span class="p">,</span> <span class="s1">&#39;Dogs&#39;</span><span class="p">,</span> <span class="s1">&#39;Logs&#39;</span>
<span class="n">sizes</span> <span class="o">=</span> <span class="p">[</span><span class="mi">15</span><span class="p">,</span> <span class="mi">30</span><span class="p">,</span> <span class="mi">45</span><span class="p">,</span> <span class="mi">10</span><span class="p">]</span> <span class="n">sizes</span> <span class="o">=</span> <span class="p">[</span><span class="mi">15</span><span class="p">,</span> <span class="mi">30</span><span class="p">,</span> <span class="mi">45</span><span class="p">,</span> <span class="mi">10</span><span class="p">]</span>
<span class="n">explode</span> <span class="o">=</span> <span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mf">0.1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="n">explode</span> <span class="o">=</span> <span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mf">0.1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
<span class="n">fig1</span><span class="p">,</span> <span class="n">ax1</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">()</span> <span class="n">fig1</span><span class="p">,</span> <span class="n">ax1</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">()</span>
<span class="n">ax1</span><span class="o">.</span><span class="n">pie</span><span class="p">(</span><span class="n">sizes</span><span class="p">,</span> <span class="n">explode</span><span class="o">=</span><span class="n">explode</span><span class="p">,</span> <span class="n">labels</span><span class="o">=</span><span class="n">labels</span><span class="p">,</span> <span class="n">autopct</span><span class="o">=</span><span class="s1">&#39;</span><span class="si">%1.1f%%</span><span class="s1">&#39;</span><span class="p">,</span> <span class="n">shadow</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">startangle</span><span class="o">=</span><span class="mi">90</span><span class="p">)</span> <span class="n">ax1</span><span class="o">.</span><span class="n">pie</span><span class="p">(</span><span class="n">sizes</span><span class="p">,</span> <span class="n">explode</span><span class="o">=</span><span class="n">explode</span><span class="p">,</span> <span class="n">labels</span><span class="o">=</span><span class="n">labels</span><span class="p">,</span> <span class="n">autopct</span><span class="o">=</span><span class="s1">&#39;</span><span class="si">%1.1f%%</span><span class="s1">&#39;</span><span class="p">,</span> <span class="n">shadow</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">startangle</span><span class="o">=</span><span class="mi">90</span><span class="p">)</span>
<span class="n">ax1</span><span class="o">.</span><span class="n">axis</span><span class="p">(</span><span class="s1">&#39;equal&#39;</span><span class="p">)</span> <span class="c1"># Equal aspect ratio ensures that pie is drawn as a circle. </span> <span class="n">ax1</span><span class="o">.</span><span class="n">axis</span><span class="p">(</span><span class="s1">&#39;equal&#39;</span><span class="p">);</span> <span class="c1"># Equal aspect ratio ensures that pie is drawn as a circle. </span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre></div> </pre></div>
</div> </div>
</div> </div>
@ -734,29 +757,26 @@ closed为True则指定多边形将起点和终点重合从而显式关闭多边
<img alt="../_images/index_21_0.png" src="../_images/index_21_0.png" /> <img alt="../_images/index_21_0.png" src="../_images/index_21_0.png" />
</div> </div>
</div> </div>
<p></p>
<p></p>
<p>wedge绘制饼图</p> <p>wedge绘制饼图</p>
<div class="cell docutils container"> <div class="cell docutils container">
<div class="cell_input docutils container"> <div class="cell_input docutils container">
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span> <div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span><span class="mi">5</span><span class="p">))</span>
<span class="kn">from</span> <span class="nn">matplotlib.patches</span> <span class="kn">import</span> <span class="n">Circle</span><span class="p">,</span> <span class="n">Wedge</span>
<span class="kn">from</span> <span class="nn">matplotlib.collections</span> <span class="kn">import</span> <span class="n">PatchCollection</span>
<span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span>
<span class="n">ax1</span> <span class="o">=</span> <span class="n">fig</span><span class="o">.</span><span class="n">add_subplot</span><span class="p">(</span><span class="mi">111</span><span class="p">)</span> <span class="n">ax1</span> <span class="o">=</span> <span class="n">fig</span><span class="o">.</span><span class="n">add_subplot</span><span class="p">(</span><span class="mi">111</span><span class="p">)</span>
<span class="n">theta1</span> <span class="o">=</span> <span class="mi">0</span> <span class="n">theta1</span> <span class="o">=</span> <span class="mi">0</span>
<span class="n">sizes</span> <span class="o">=</span> <span class="p">[</span><span class="mi">15</span><span class="p">,</span> <span class="mi">30</span><span class="p">,</span> <span class="mi">45</span><span class="p">,</span> <span class="mi">10</span><span class="p">]</span> <span class="n">sizes</span> <span class="o">=</span> <span class="p">[</span><span class="mi">15</span><span class="p">,</span> <span class="mi">30</span><span class="p">,</span> <span class="mi">45</span><span class="p">,</span> <span class="mi">10</span><span class="p">]</span>
<span class="n">patches</span> <span class="o">=</span> <span class="p">[]</span> <span class="n">patches</span> <span class="o">=</span> <span class="p">[]</span>
<span class="n">patches</span> <span class="o">+=</span> <span class="p">[</span> <span class="n">patches</span> <span class="o">+=</span> <span class="p">[</span>
<span class="n">Wedge</span><span class="p">((</span><span class="mf">0.3</span><span class="p">,</span> <span class="mf">0.3</span><span class="p">),</span> <span class="mf">.2</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">54</span><span class="p">),</span> <span class="c1"># Full circle</span> <span class="n">Wedge</span><span class="p">((</span><span class="mf">0.5</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">),</span> <span class="mf">.4</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">54</span><span class="p">),</span>
<span class="n">Wedge</span><span class="p">((</span><span class="mf">0.3</span><span class="p">,</span> <span class="mf">0.3</span><span class="p">),</span> <span class="mf">.2</span><span class="p">,</span> <span class="mi">54</span><span class="p">,</span> <span class="mi">162</span><span class="p">),</span> <span class="c1"># Full ring</span> <span class="n">Wedge</span><span class="p">((</span><span class="mf">0.5</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">),</span> <span class="mf">.4</span><span class="p">,</span> <span class="mi">54</span><span class="p">,</span> <span class="mi">162</span><span class="p">),</span>
<span class="n">Wedge</span><span class="p">((</span><span class="mf">0.3</span><span class="p">,</span> <span class="mf">0.3</span><span class="p">),</span> <span class="mf">.2</span><span class="p">,</span> <span class="mi">162</span><span class="p">,</span> <span class="mi">324</span><span class="p">),</span> <span class="c1"># Full sector</span> <span class="n">Wedge</span><span class="p">((</span><span class="mf">0.5</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">),</span> <span class="mf">.4</span><span class="p">,</span> <span class="mi">162</span><span class="p">,</span> <span class="mi">324</span><span class="p">),</span>
<span class="n">Wedge</span><span class="p">((</span><span class="mf">0.3</span><span class="p">,</span> <span class="mf">0.3</span><span class="p">),</span> <span class="mf">.2</span><span class="p">,</span> <span class="mi">324</span><span class="p">,</span> <span class="mi">360</span><span class="p">),</span> <span class="c1"># Ring sector</span> <span class="n">Wedge</span><span class="p">((</span><span class="mf">0.5</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">),</span> <span class="mf">.4</span><span class="p">,</span> <span class="mi">324</span><span class="p">,</span> <span class="mi">360</span><span class="p">),</span>
<span class="p">]</span> <span class="p">]</span>
<span class="n">colors</span> <span class="o">=</span> <span class="mi">100</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">rand</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">patches</span><span class="p">))</span> <span class="n">colors</span> <span class="o">=</span> <span class="mi">100</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">rand</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">patches</span><span class="p">))</span>
<span class="n">p</span> <span class="o">=</span> <span class="n">PatchCollection</span><span class="p">(</span><span class="n">patches</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.4</span><span class="p">)</span> <span class="n">p</span> <span class="o">=</span> <span class="n">PatchCollection</span><span class="p">(</span><span class="n">patches</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.8</span><span class="p">)</span>
<span class="n">p</span><span class="o">.</span><span class="n">set_array</span><span class="p">(</span><span class="n">colors</span><span class="p">)</span> <span class="n">p</span><span class="o">.</span><span class="n">set_array</span><span class="p">(</span><span class="n">colors</span><span class="p">)</span>
<span class="n">ax1</span><span class="o">.</span><span class="n">add_collection</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> <span class="n">ax1</span><span class="o">.</span><span class="n">add_collection</span><span class="p">(</span><span class="n">p</span><span class="p">);</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre></div> </pre></div>
</div> </div>
</div> </div>
@ -764,6 +784,8 @@ closed为True则指定多边形将起点和终点重合从而显式关闭多边
<img alt="../_images/index_23_0.png" src="../_images/index_23_0.png" /> <img alt="../_images/index_23_0.png" src="../_images/index_23_0.png" />
</div> </div>
</div> </div>
<p></p>
<p></p>
</div> </div>
</div> </div>
<div class="section" id="collections"> <div class="section" id="collections">
@ -786,8 +808,7 @@ closed为True则指定多边形将起点和终点重合从而显式关闭多边
<span class="n">x</span> <span class="o">=</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">6</span><span class="p">,</span><span class="mi">8</span><span class="p">,</span><span class="mi">10</span><span class="p">]</span> <span class="n">x</span> <span class="o">=</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">6</span><span class="p">,</span><span class="mi">8</span><span class="p">,</span><span class="mi">10</span><span class="p">]</span>
<span class="n">y</span> <span class="o">=</span> <span class="p">[</span><span class="mi">10</span><span class="p">]</span><span class="o">*</span><span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="n">y</span> <span class="o">=</span> <span class="p">[</span><span class="mi">10</span><span class="p">]</span><span class="o">*</span><span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
<span class="n">s</span> <span class="o">=</span> <span class="p">[</span><span class="mi">20</span><span class="o">*</span><span class="mi">2</span><span class="o">**</span><span class="n">n</span> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">))]</span> <span class="n">s</span> <span class="o">=</span> <span class="p">[</span><span class="mi">20</span><span class="o">*</span><span class="mi">2</span><span class="o">**</span><span class="n">n</span> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">))]</span>
<span class="n">plt</span><span class="o">.</span><span class="n">scatter</span><span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">s</span><span class="o">=</span><span class="n">s</span><span class="p">)</span> <span class="n">plt</span><span class="o">.</span><span class="n">scatter</span><span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">s</span><span class="o">=</span><span class="n">s</span><span class="p">)</span> <span class="p">;</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre></div> </pre></div>
</div> </div>
</div> </div>
@ -795,6 +816,8 @@ closed为True则指定多边形将起点和终点重合从而显式关闭多边
<img alt="../_images/index_25_0.png" src="../_images/index_25_0.png" /> <img alt="../_images/index_25_0.png" src="../_images/index_25_0.png" />
</div> </div>
</div> </div>
<p></p>
<p></p>
</div> </div>
<div class="section" id="images"> <div class="section" id="images">
<h3>4. images<a class="headerlink" href="#images" title="永久链接至标题"></a></h3> <h3>4. images<a class="headerlink" href="#images" title="永久链接至标题"></a></h3>
@ -809,9 +832,7 @@ closed为True则指定多边形将起点和终点重合从而显式关闭多边
<p>使用imshow画图时首先需要传入一个数组数组对应的是空间内的像素位置和像素点的值interpolation参数可以设置不同的差值方法具体效果如下。</p> <p>使用imshow画图时首先需要传入一个数组数组对应的是空间内的像素位置和像素点的值interpolation参数可以设置不同的差值方法具体效果如下。</p>
<div class="cell docutils container"> <div class="cell docutils container">
<div class="cell_input docutils container"> <div class="cell_input docutils container">
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span> <div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">methods</span> <span class="o">=</span> <span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="s1">&#39;none&#39;</span><span class="p">,</span> <span class="s1">&#39;nearest&#39;</span><span class="p">,</span> <span class="s1">&#39;bilinear&#39;</span><span class="p">,</span> <span class="s1">&#39;bicubic&#39;</span><span class="p">,</span> <span class="s1">&#39;spline16&#39;</span><span class="p">,</span>
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="n">methods</span> <span class="o">=</span> <span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="s1">&#39;none&#39;</span><span class="p">,</span> <span class="s1">&#39;nearest&#39;</span><span class="p">,</span> <span class="s1">&#39;bilinear&#39;</span><span class="p">,</span> <span class="s1">&#39;bicubic&#39;</span><span class="p">,</span> <span class="s1">&#39;spline16&#39;</span><span class="p">,</span>
<span class="s1">&#39;spline36&#39;</span><span class="p">,</span> <span class="s1">&#39;hanning&#39;</span><span class="p">,</span> <span class="s1">&#39;hamming&#39;</span><span class="p">,</span> <span class="s1">&#39;hermite&#39;</span><span class="p">,</span> <span class="s1">&#39;kaiser&#39;</span><span class="p">,</span> <span class="s1">&#39;quadric&#39;</span><span class="p">,</span> <span class="s1">&#39;spline36&#39;</span><span class="p">,</span> <span class="s1">&#39;hanning&#39;</span><span class="p">,</span> <span class="s1">&#39;hamming&#39;</span><span class="p">,</span> <span class="s1">&#39;hermite&#39;</span><span class="p">,</span> <span class="s1">&#39;kaiser&#39;</span><span class="p">,</span> <span class="s1">&#39;quadric&#39;</span><span class="p">,</span>
<span class="s1">&#39;catrom&#39;</span><span class="p">,</span> <span class="s1">&#39;gaussian&#39;</span><span class="p">,</span> <span class="s1">&#39;bessel&#39;</span><span class="p">,</span> <span class="s1">&#39;mitchell&#39;</span><span class="p">,</span> <span class="s1">&#39;sinc&#39;</span><span class="p">,</span> <span class="s1">&#39;lanczos&#39;</span><span class="p">]</span> <span class="s1">&#39;catrom&#39;</span><span class="p">,</span> <span class="s1">&#39;gaussian&#39;</span><span class="p">,</span> <span class="s1">&#39;bessel&#39;</span><span class="p">,</span> <span class="s1">&#39;mitchell&#39;</span><span class="p">,</span> <span class="s1">&#39;sinc&#39;</span><span class="p">,</span> <span class="s1">&#39;lanczos&#39;</span><span class="p">]</span>
@ -825,8 +846,7 @@ closed为True则指定多边形将起点和终点重合从而显式关闭多边
<span class="n">ax</span><span class="o">.</span><span class="n">imshow</span><span class="p">(</span><span class="n">grid</span><span class="p">,</span> <span class="n">interpolation</span><span class="o">=</span><span class="n">interp_method</span><span class="p">,</span> <span class="n">cmap</span><span class="o">=</span><span class="s1">&#39;viridis&#39;</span><span class="p">)</span> <span class="n">ax</span><span class="o">.</span><span class="n">imshow</span><span class="p">(</span><span class="n">grid</span><span class="p">,</span> <span class="n">interpolation</span><span class="o">=</span><span class="n">interp_method</span><span class="p">,</span> <span class="n">cmap</span><span class="o">=</span><span class="s1">&#39;viridis&#39;</span><span class="p">)</span>
<span class="n">ax</span><span class="o">.</span><span class="n">set_title</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">interp_method</span><span class="p">))</span> <span class="n">ax</span><span class="o">.</span><span class="n">set_title</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">interp_method</span><span class="p">))</span>
<span class="n">plt</span><span class="o">.</span><span class="n">tight_layout</span><span class="p">()</span> <span class="n">plt</span><span class="o">.</span><span class="n">tight_layout</span><span class="p">();</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre></div> </pre></div>
</div> </div>
</div> </div>
@ -834,6 +854,8 @@ closed为True则指定多边形将起点和终点重合从而显式关闭多边
<img alt="../_images/index_27_0.png" src="../_images/index_27_0.png" /> <img alt="../_images/index_27_0.png" src="../_images/index_27_0.png" />
</div> </div>
</div> </div>
<p></p>
<p></p>
</div> </div>
</div> </div>
<div class="section" id="object-container"> <div class="section" id="object-container">
@ -842,7 +864,7 @@ closed为True则指定多边形将起点和终点重合从而显式关闭多边
比如<code class="docutils literal notranslate"><span class="pre">Axes</span> <span class="pre">Artist</span></code>,它是一种容器,它包含了很多<code class="docutils literal notranslate"><span class="pre">primitives</span></code>,比如<code class="docutils literal notranslate"><span class="pre">Line2D</span></code><code class="docutils literal notranslate"><span class="pre">Text</span></code>;同时,它也有自身的属性,比如<code class="docutils literal notranslate"><span class="pre">xscal</span></code>用来控制X轴是<code class="docutils literal notranslate"><span class="pre">linear</span></code>还是<code class="docutils literal notranslate"><span class="pre">log</span></code>的。</p> 比如<code class="docutils literal notranslate"><span class="pre">Axes</span> <span class="pre">Artist</span></code>,它是一种容器,它包含了很多<code class="docutils literal notranslate"><span class="pre">primitives</span></code>,比如<code class="docutils literal notranslate"><span class="pre">Line2D</span></code><code class="docutils literal notranslate"><span class="pre">Text</span></code>;同时,它也有自身的属性,比如<code class="docutils literal notranslate"><span class="pre">xscal</span></code>用来控制X轴是<code class="docutils literal notranslate"><span class="pre">linear</span></code>还是<code class="docutils literal notranslate"><span class="pre">log</span></code>的。</p>
<div class="section" id="figure"> <div class="section" id="figure">
<h3>1. Figure容器<a class="headerlink" href="#figure" title="永久链接至标题"></a></h3> <h3>1. Figure容器<a class="headerlink" href="#figure" title="永久链接至标题"></a></h3>
<p><code class="docutils literal notranslate"><span class="pre">matplotlib.figure.Figure</span></code><code class="docutils literal notranslate"><span class="pre">Artist</span></code>最顶层的<code class="docutils literal notranslate"><span class="pre">container</span></code>-对象容器,它包含了图表中的所有元素。一张图表的背景就是在<code class="docutils literal notranslate"><span class="pre">Figure.patch</span></code>的一个矩形<code class="docutils literal notranslate"><span class="pre">Rectangle</span></code><br /> <p><code class="docutils literal notranslate"><span class="pre">matplotlib.figure.Figure</span></code><code class="docutils literal notranslate"><span class="pre">Artist</span></code>最顶层的<code class="docutils literal notranslate"><span class="pre">container</span></code>对象容器,它包含了图表中的所有元素。一张图表的背景就是在<code class="docutils literal notranslate"><span class="pre">Figure.patch</span></code>的一个矩形<code class="docutils literal notranslate"><span class="pre">Rectangle</span></code><br />
当我们向图表添加<code class="docutils literal notranslate"><span class="pre">Figure.add_subplot()</span></code>或者<code class="docutils literal notranslate"><span class="pre">Figure.add_axes()</span></code>元素时,这些都会被添加到<code class="docutils literal notranslate"><span class="pre">Figure.axes</span></code>列表中。</p> 当我们向图表添加<code class="docutils literal notranslate"><span class="pre">Figure.add_subplot()</span></code>或者<code class="docutils literal notranslate"><span class="pre">Figure.add_axes()</span></code>元素时,这些都会被添加到<code class="docutils literal notranslate"><span class="pre">Figure.axes</span></code>列表中。</p>
<div class="cell docutils container"> <div class="cell docutils container">
<div class="cell_input docutils container"> <div class="cell_input docutils container">
@ -862,7 +884,6 @@ closed为True则指定多边形将起点和终点重合从而显式关闭多边
<img alt="../_images/index_29_1.png" src="../_images/index_29_1.png" /> <img alt="../_images/index_29_1.png" src="../_images/index_29_1.png" />
</div> </div>
</div> </div>
<p></p>
<p>由于<code class="docutils literal notranslate"><span class="pre">Figure</span></code>维持了<code class="docutils literal notranslate"><span class="pre">current</span> <span class="pre">axes</span></code>,因此你不应该手动的从<code class="docutils literal notranslate"><span class="pre">Figure.axes</span></code>列表中添加删除元素,而是要通过<code class="docutils literal notranslate"><span class="pre">Figure.add_subplot()</span></code><code class="docutils literal notranslate"><span class="pre">Figure.add_axes()</span></code>来添加元素,通过<code class="docutils literal notranslate"><span class="pre">Figure.delaxes()</span></code>来删除元素。但是你可以迭代或者访问<code class="docutils literal notranslate"><span class="pre">Figure.axes</span></code>中的<code class="docutils literal notranslate"><span class="pre">Axes</span></code>,然后修改这个<code class="docutils literal notranslate"><span class="pre">Axes</span></code>的属性。</p> <p>由于<code class="docutils literal notranslate"><span class="pre">Figure</span></code>维持了<code class="docutils literal notranslate"><span class="pre">current</span> <span class="pre">axes</span></code>,因此你不应该手动的从<code class="docutils literal notranslate"><span class="pre">Figure.axes</span></code>列表中添加删除元素,而是要通过<code class="docutils literal notranslate"><span class="pre">Figure.add_subplot()</span></code><code class="docutils literal notranslate"><span class="pre">Figure.add_axes()</span></code>来添加元素,通过<code class="docutils literal notranslate"><span class="pre">Figure.delaxes()</span></code>来删除元素。但是你可以迭代或者访问<code class="docutils literal notranslate"><span class="pre">Figure.axes</span></code>中的<code class="docutils literal notranslate"><span class="pre">Axes</span></code>,然后修改这个<code class="docutils literal notranslate"><span class="pre">Axes</span></code>的属性。</p>
<p>比如下面的遍历axes里的内容并且添加网格线</p> <p>比如下面的遍历axes里的内容并且添加网格线</p>
<div class="cell docutils container"> <div class="cell docutils container">
@ -872,7 +893,6 @@ closed为True则指定多边形将起点和终点重合从而显式关闭多边
<span class="k">for</span> <span class="n">ax</span> <span class="ow">in</span> <span class="n">fig</span><span class="o">.</span><span class="n">axes</span><span class="p">:</span> <span class="k">for</span> <span class="n">ax</span> <span class="ow">in</span> <span class="n">fig</span><span class="o">.</span><span class="n">axes</span><span class="p">:</span>
<span class="n">ax</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span> <span class="n">ax</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
</pre></div> </pre></div>
</div> </div>
</div> </div>
@ -880,6 +900,8 @@ closed为True则指定多边形将起点和终点重合从而显式关闭多边
<img alt="../_images/index_31_0.png" src="../_images/index_31_0.png" /> <img alt="../_images/index_31_0.png" src="../_images/index_31_0.png" />
</div> </div>
</div> </div>
<p></p>
<p></p>
<p><code class="docutils literal notranslate"><span class="pre">Figure</span></code>也有它自己的<code class="docutils literal notranslate"><span class="pre">text、line、patch、image</span></code>。你可以直接通过<code class="docutils literal notranslate"><span class="pre">add</span> <span class="pre">primitive</span></code>语句直接添加。但是注意<code class="docutils literal notranslate"><span class="pre">Figure</span></code>默认的坐标系是以像素为单位你可能需要转换成figure坐标系(0,0)表示左下点,(1,1)表示右上点。</p> <p><code class="docutils literal notranslate"><span class="pre">Figure</span></code>也有它自己的<code class="docutils literal notranslate"><span class="pre">text、line、patch、image</span></code>。你可以直接通过<code class="docutils literal notranslate"><span class="pre">add</span> <span class="pre">primitive</span></code>语句直接添加。但是注意<code class="docutils literal notranslate"><span class="pre">Figure</span></code>默认的坐标系是以像素为单位你可能需要转换成figure坐标系(0,0)表示左下点,(1,1)表示右上点。</p>
<p><strong>Figure容器的常见属性</strong><br /> <p><strong>Figure容器的常见属性</strong><br />
<code class="docutils literal notranslate"><span class="pre">Figure.patch</span></code>属性Figure的背景矩形<br /> <code class="docutils literal notranslate"><span class="pre">Figure.patch</span></code>属性Figure的背景矩形<br />
@ -895,11 +917,7 @@ closed为True则指定多边形将起点和终点重合从而显式关闭多边
<p><code class="docutils literal notranslate"><span class="pre">Figure</span></code>容器类似,<code class="docutils literal notranslate"><span class="pre">Axes</span></code>包含了一个patch属性对于笛卡尔坐标系而言它是一个<code class="docutils literal notranslate"><span class="pre">Rectangle</span></code>;对于极坐标而言,它是一个<code class="docutils literal notranslate"><span class="pre">Circle</span></code>。这个patch属性决定了绘图区域的形状、背景和边框。</p> <p><code class="docutils literal notranslate"><span class="pre">Figure</span></code>容器类似,<code class="docutils literal notranslate"><span class="pre">Axes</span></code>包含了一个patch属性对于笛卡尔坐标系而言它是一个<code class="docutils literal notranslate"><span class="pre">Rectangle</span></code>;对于极坐标而言,它是一个<code class="docutils literal notranslate"><span class="pre">Circle</span></code>。这个patch属性决定了绘图区域的形状、背景和边框。</p>
<div class="cell docutils container"> <div class="cell docutils container">
<div class="cell_input docutils container"> <div class="cell_input docutils container">
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span> <div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span>
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
<span class="kn">import</span> <span class="nn">matplotlib</span>
<span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span>
<span class="n">ax</span> <span class="o">=</span> <span class="n">fig</span><span class="o">.</span><span class="n">add_subplot</span><span class="p">(</span><span class="mi">111</span><span class="p">)</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">fig</span><span class="o">.</span><span class="n">add_subplot</span><span class="p">(</span><span class="mi">111</span><span class="p">)</span>
<span class="n">rect</span> <span class="o">=</span> <span class="n">ax</span><span class="o">.</span><span class="n">patch</span> <span class="c1"># axes的patch是一个Rectangle实例</span> <span class="n">rect</span> <span class="o">=</span> <span class="n">ax</span><span class="o">.</span><span class="n">patch</span> <span class="c1"># axes的patch是一个Rectangle实例</span>
<span class="n">rect</span><span class="o">.</span><span class="n">set_facecolor</span><span class="p">(</span><span class="s1">&#39;green&#39;</span><span class="p">)</span> <span class="n">rect</span><span class="o">.</span><span class="n">set_facecolor</span><span class="p">(</span><span class="s1">&#39;green&#39;</span><span class="p">)</span>
@ -910,6 +928,7 @@ closed为True则指定多边形将起点和终点重合从而显式关闭多边
<img alt="../_images/index_33_0.png" src="../_images/index_33_0.png" /> <img alt="../_images/index_33_0.png" src="../_images/index_33_0.png" />
</div> </div>
</div> </div>
<p></p>
<p><code class="docutils literal notranslate"><span class="pre">Axes</span></code>有许多方法用于绘图,如<code class="docutils literal notranslate"><span class="pre">.plot()、.text()、.hist()、.imshow()</span></code>等方法用于创建大多数常见的<code class="docutils literal notranslate"><span class="pre">primitive</span></code>(如<code class="docutils literal notranslate"><span class="pre">Line2DRectangleTextImage</span></code>等等)。在<code class="docutils literal notranslate"><span class="pre">primitives</span></code>中已经涉及,不再赘述。</p> <p><code class="docutils literal notranslate"><span class="pre">Axes</span></code>有许多方法用于绘图,如<code class="docutils literal notranslate"><span class="pre">.plot()、.text()、.hist()、.imshow()</span></code>等方法用于创建大多数常见的<code class="docutils literal notranslate"><span class="pre">primitive</span></code>(如<code class="docutils literal notranslate"><span class="pre">Line2DRectangleTextImage</span></code>等等)。在<code class="docutils literal notranslate"><span class="pre">primitives</span></code>中已经涉及,不再赘述。</p>
<p>Subplot就是一个特殊的Axes其实例是位于网格中某个区域的Subplot实例。其实你也可以在任意区域创建Axes通过Figure.add_axes([left,bottom,width,height])来创建一个任意区域的Axes其中left,bottom,width,height都是[0—1]之间的浮点数他们代表了相对于Figure的坐标。</p> <p>Subplot就是一个特殊的Axes其实例是位于网格中某个区域的Subplot实例。其实你也可以在任意区域创建Axes通过Figure.add_axes([left,bottom,width,height])来创建一个任意区域的Axes其中left,bottom,width,height都是[0—1]之间的浮点数他们代表了相对于Figure的坐标。</p>
<p>你不应该直接通过<code class="docutils literal notranslate"><span class="pre">Axes.lines</span></code><code class="docutils literal notranslate"><span class="pre">Axes.patches</span></code>列表来添加图表。因为当创建或添加一个对象到图表中时,<code class="docutils literal notranslate"><span class="pre">Axes</span></code>会做许多自动化的工作:<br /> <p>你不应该直接通过<code class="docutils literal notranslate"><span class="pre">Axes.lines</span></code><code class="docutils literal notranslate"><span class="pre">Axes.patches</span></code>列表来添加图表。因为当创建或添加一个对象到图表中时,<code class="docutils literal notranslate"><span class="pre">Axes</span></code>会做许多自动化的工作:<br />
@ -921,15 +940,15 @@ closed为True则指定多边形将起点和终点重合从而显式关闭多边
<code class="docutils literal notranslate"><span class="pre">ax.yaxis</span></code>YAxis对象的实例用于处理y轴tick以及label的绘制<br /> <code class="docutils literal notranslate"><span class="pre">ax.yaxis</span></code>YAxis对象的实例用于处理y轴tick以及label的绘制<br />
会在下面章节详细说明。</p> 会在下面章节详细说明。</p>
<p><strong>Axes容器</strong>的常见属性有:<br /> <p><strong>Axes容器</strong>的常见属性有:<br />
<code class="docutils literal notranslate"><span class="pre">artists</span></code>: Artist实例列表 <code class="docutils literal notranslate"><span class="pre">artists</span></code>: Artist实例列表<br />
<code class="docutils literal notranslate"><span class="pre">patch</span></code>: Axes所在的矩形实例 <code class="docutils literal notranslate"><span class="pre">patch</span></code>: Axes所在的矩形实例<br />
<code class="docutils literal notranslate"><span class="pre">collections</span></code>: Collection实例 <code class="docutils literal notranslate"><span class="pre">collections</span></code>: Collection实例<br />
<code class="docutils literal notranslate"><span class="pre">images</span></code>: Axes图像 <code class="docutils literal notranslate"><span class="pre">images</span></code>: Axes图像<br />
<code class="docutils literal notranslate"><span class="pre">legends</span></code>: Legend 实例 <code class="docutils literal notranslate"><span class="pre">legends</span></code>: Legend 实例<br />
<code class="docutils literal notranslate"><span class="pre">lines</span></code>: Line2D 实例 <code class="docutils literal notranslate"><span class="pre">lines</span></code>: Line2D 实例<br />
<code class="docutils literal notranslate"><span class="pre">patches</span></code>: Patch 实例 <code class="docutils literal notranslate"><span class="pre">patches</span></code>: Patch 实例<br />
<code class="docutils literal notranslate"><span class="pre">texts</span></code>: Text 实例 <code class="docutils literal notranslate"><span class="pre">texts</span></code>: Text 实例<br />
<code class="docutils literal notranslate"><span class="pre">xaxis</span></code>: matplotlib.axis.XAxis 实例 <code class="docutils literal notranslate"><span class="pre">xaxis</span></code>: matplotlib.axis.XAxis 实例<br />
<code class="docutils literal notranslate"><span class="pre">yaxis</span></code>: matplotlib.axis.YAxis 实例</p> <code class="docutils literal notranslate"><span class="pre">yaxis</span></code>: matplotlib.axis.YAxis 实例</p>
</div> </div>
<div class="section" id="axis"> <div class="section" id="axis">
@ -967,6 +986,7 @@ closed为True则指定多边形将起点和终点重合从而显式关闭多边
<img alt="../_images/index_35_1.png" src="../_images/index_35_1.png" /> <img alt="../_images/index_35_1.png" src="../_images/index_35_1.png" />
</div> </div>
</div> </div>
<p></p>
<p>下面的例子展示了如何调整一些轴和刻度的属性(忽略美观度,仅作调整参考)</p> <p>下面的例子展示了如何调整一些轴和刻度的属性(忽略美观度,仅作调整参考)</p>
<div class="cell docutils container"> <div class="cell docutils container">
<div class="cell_input docutils container"> <div class="cell_input docutils container">
@ -990,8 +1010,6 @@ closed为True则指定多边形将起点和终点重合从而显式关闭多边
<span class="n">line</span><span class="o">.</span><span class="n">set_color</span><span class="p">(</span><span class="s1">&#39;green&#39;</span><span class="p">)</span> <span class="c1"># 颜色</span> <span class="n">line</span><span class="o">.</span><span class="n">set_color</span><span class="p">(</span><span class="s1">&#39;green&#39;</span><span class="p">)</span> <span class="c1"># 颜色</span>
<span class="n">line</span><span class="o">.</span><span class="n">set_markersize</span><span class="p">(</span><span class="mi">25</span><span class="p">)</span> <span class="c1"># marker大小</span> <span class="n">line</span><span class="o">.</span><span class="n">set_markersize</span><span class="p">(</span><span class="mi">25</span><span class="p">)</span> <span class="c1"># marker大小</span>
<span class="n">line</span><span class="o">.</span><span class="n">set_markeredgewidth</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span><span class="c1"># marker粗细</span> <span class="n">line</span><span class="o">.</span><span class="n">set_markeredgewidth</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span><span class="c1"># marker粗细</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre></div> </pre></div>
</div> </div>
</div> </div>
@ -999,6 +1017,7 @@ closed为True则指定多边形将起点和终点重合从而显式关闭多边
<img alt="../_images/index_37_0.png" src="../_images/index_37_0.png" /> <img alt="../_images/index_37_0.png" src="../_images/index_37_0.png" />
</div> </div>
</div> </div>
<p></p>
</div> </div>
<div class="section" id="tick"> <div class="section" id="tick">
<h3>4. Tick容器<a class="headerlink" href="#tick" title="永久链接至标题"></a></h3> <h3>4. Tick容器<a class="headerlink" href="#tick" title="永久链接至标题"></a></h3>
@ -1015,11 +1034,7 @@ x轴分为上下两个因此tick1对应下侧的轴tick2对应上侧的轴
<p>下面的例子展示了如何将Y轴右边轴设为主轴并将标签设置为美元符号且为绿色</p> <p>下面的例子展示了如何将Y轴右边轴设为主轴并将标签设置为美元符号且为绿色</p>
<div class="cell docutils container"> <div class="cell docutils container">
<div class="cell_input docutils container"> <div class="cell_input docutils container">
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span> <div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">()</span>
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
<span class="kn">import</span> <span class="nn">matplotlib</span>
<span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">()</span>
<span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="mi">100</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">rand</span><span class="p">(</span><span class="mi">20</span><span class="p">))</span> <span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="mi">100</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">rand</span><span class="p">(</span><span class="mi">20</span><span class="p">))</span>
<span class="c1"># 设置ticker的显示格式</span> <span class="c1"># 设置ticker的显示格式</span>
@ -1036,14 +1051,27 @@ x轴分为上下两个因此tick1对应下侧的轴tick2对应上侧的轴
<img alt="../_images/index_39_0.png" src="../_images/index_39_0.png" /> <img alt="../_images/index_39_0.png" src="../_images/index_39_0.png" />
</div> </div>
</div> </div>
<p></p>
</div> </div>
</div> </div>
<div class="section" id="id3"> <div class="section" id="id3">
<h2>参考资料<a class="headerlink" href="#id3" title="永久链接至标题"></a></h2> <h2>思考题<a class="headerlink" href="#id3" title="永久链接至标题"></a></h2>
<ul class="simple">
<li><p>primitives 和 container的区别和联系是什么分别用于控制可视化图表中的哪些要素</p></li>
<li><p>使用提供的drug数据集对第一列yyyy和第二列state分组求和画出下面折线图。PA加粗标黄其他为灰色。<br />
图标题和横纵坐标轴标题,以及线的文本暂不做要求。</p></li>
</ul>
<p><img alt="" src="https://img-blog.csdnimg.cn/20210523162430365.png" /></p>
<ul class="simple">
<li><p>分别用一组长方形柱和填充面积的方式模仿画出下图,函数 y = -1 * (x - 2) * (x - 8) +10 在区间[2,9]的积分面积<br />
<img alt="" src="https://img-blog.csdnimg.cn/20201126105910781.png" /><br />
<img alt="" src="https://img-blog.csdnimg.cn/20201126105910780.png" /></p></li>
</ul>
</div>
<div class="section" id="id4">
<h2>参考资料<a class="headerlink" href="#id4" title="永久链接至标题"></a></h2>
<p><a class="reference external" href="https://zhuanlan.zhihu.com/p/32693665">1. matplotlib设计的基本逻辑</a><br /> <p><a class="reference external" href="https://zhuanlan.zhihu.com/p/32693665">1. matplotlib设计的基本逻辑</a><br />
<a class="reference external" href="https://matplotlib.org/api/artist_api.html">2. matplotlib.artist api</a><br /> <a class="reference external" href="https://www.bookstack.cn/read/huaxiaozhuan-ai/spilt.2.333f5abdbabf383d.md">2. AI算法工程师手册</a></p>
<a class="reference external" href="https://matplotlib.org/tutorials/intermediate/artists.html#sphx-glr-tutorials-intermediate-artists-py">3. matplotlib官方教程</a><br />
<a class="reference external" href="https://www.bookstack.cn/read/huaxiaozhuan-ai/spilt.2.333f5abdbabf383d.md">4. AI算法工程师手册</a></p>
</div> </div>
</div> </div>
@ -1064,9 +1092,9 @@ x轴分为上下两个因此tick1对应下侧的轴tick2对应上侧的轴
<div class="container"> <div class="container">
<p> <p>
By Datawhale<br/> By Datawhale数据可视化开源小组<br/>
&copy; Copyright © Copyright 2020.<br/> &copy; Copyright © Copyright 2021.<br/>
</p> </p>
</div> </div>
</footer> </footer>

View File

@ -289,7 +289,7 @@
</div> </div>
</div> </div>
<div class="cell_output docutils container"> <div class="cell_output docutils container">
<img alt="../_images/index_2_01.png" src="../_images/index_2_01.png" /> <img alt="../_images/index_2_02.png" src="../_images/index_2_02.png" />
</div> </div>
</div> </div>
<div class="cell docutils container"> <div class="cell docutils container">
@ -349,7 +349,7 @@ ytick.labelsize : 16</p>
</div> </div>
</div> </div>
<div class="cell_output docutils container"> <div class="cell_output docutils container">
<img alt="../_images/index_9_01.png" src="../_images/index_9_01.png" /> <img alt="../_images/index_9_02.png" src="../_images/index_9_02.png" />
</div> </div>
</div> </div>
</div> </div>
@ -365,7 +365,7 @@ ytick.labelsize : 16</p>
</div> </div>
</div> </div>
<div class="cell_output docutils container"> <div class="cell_output docutils container">
<img alt="../_images/index_11_01.png" src="../_images/index_11_01.png" /> <img alt="../_images/index_11_02.png" src="../_images/index_11_02.png" />
</div> </div>
</div> </div>
<div class="cell docutils container"> <div class="cell docutils container">
@ -377,7 +377,7 @@ ytick.labelsize : 16</p>
</div> </div>
</div> </div>
<div class="cell_output docutils container"> <div class="cell_output docutils container">
<img alt="../_images/index_12_01.png" src="../_images/index_12_01.png" /> <img alt="../_images/index_12_0.png" src="../_images/index_12_0.png" />
</div> </div>
</div> </div>
<p>另外matplotlib也还提供了了一种更便捷的修改样式方式可以一次性修改多个样式。</p> <p>另外matplotlib也还提供了了一种更便捷的修改样式方式可以一次性修改多个样式。</p>
@ -389,7 +389,7 @@ ytick.labelsize : 16</p>
</div> </div>
</div> </div>
<div class="cell_output docutils container"> <div class="cell_output docutils container">
<img alt="../_images/index_14_01.png" src="../_images/index_14_01.png" /> <img alt="../_images/index_14_0.png" src="../_images/index_14_0.png" />
</div> </div>
</div> </div>
</div> </div>
@ -538,9 +538,9 @@ ytick.labelsize : 16</p>
<div class="container"> <div class="container">
<p> <p>
By Datawhale<br/> By Datawhale数据可视化开源小组<br/>
&copy; Copyright © Copyright 2020.<br/> &copy; Copyright © Copyright 2021.<br/>
</p> </p>
</div> </div>
</footer> </footer>

View File

@ -391,7 +391,7 @@
</div> </div>
</div> </div>
<div class="cell_output docutils container"> <div class="cell_output docutils container">
<img alt="../_images/index_5_02.png" src="../_images/index_5_02.png" /> <img alt="../_images/index_5_01.png" src="../_images/index_5_01.png" />
</div> </div>
</div> </div>
<p></p> <p></p>
@ -493,7 +493,7 @@ ylabel方式类似这里不重复写出。<br />
</div> </div>
</div> </div>
<div class="cell_output docutils container"> <div class="cell_output docutils container">
<img alt="../_images/index_9_02.png" src="../_images/index_9_02.png" /> <img alt="../_images/index_9_03.png" src="../_images/index_9_03.png" />
</div> </div>
</div> </div>
<p></p> <p></p>
@ -523,7 +523,7 @@ annotate的参数非常复杂这里仅仅展示一个简单的例子更多
</div> </div>
</div> </div>
<div class="cell_output docutils container"> <div class="cell_output docutils container">
<img alt="../_images/index_11_02.png" src="../_images/index_11_02.png" /> <img alt="../_images/index_11_03.png" src="../_images/index_11_03.png" />
</div> </div>
</div> </div>
<p></p> <p></p>
@ -557,7 +557,7 @@ annotate的参数非常复杂这里仅仅展示一个简单的例子更多
</div> </div>
</div> </div>
<div class="cell_output docutils container"> <div class="cell_output docutils container">
<img alt="../_images/index_14_02.png" src="../_images/index_14_02.png" /> <img alt="../_images/index_14_01.png" src="../_images/index_14_01.png" />
</div> </div>
</div> </div>
<p></p> <p></p>
@ -909,9 +909,9 @@ ax.legend(loc='upper center') 等同于ax.legend(loc=9)</p>
<div class="container"> <div class="container">
<p> <p>
By Datawhale<br/> By Datawhale数据可视化开源小组<br/>
&copy; Copyright © Copyright 2020.<br/> &copy; Copyright © Copyright 2021.<br/>
</p> </p>
</div> </div>
</footer> </footer>

File diff suppressed because one or more lines are too long