20
README.md
|
@ -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/)
|
||||
- 使用时若发现任何问题,或是你对项目内容有好的建议,欢迎留言交流
|
||||
- 使用时若发现任何问题,或是你对项目内容有好的建议,欢迎留言交流,联系邮箱skywateryang@126.com
|
||||
|
||||
|
||||
## 目录
|
||||
|
@ -41,31 +41,23 @@ Matplotlib可以说是python数据可视化最重要且常见的工具之一,
|
|||
|
||||
> 和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>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# 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.
|
||||
config: 8c8106cd161cd2ce86ae48c61840ee9f
|
||||
config: 815228cb4fe22cc72c32eeeb4cd16a8b
|
||||
tags: 645f666f9bcd5a90fca523b33c5a78b7
|
||||
|
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 9.5 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 4.5 KiB |
Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 6.4 KiB |
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 106 KiB After Width: | Height: | Size: 111 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 9.5 KiB |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 9.5 KiB After Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 8.2 KiB |
Before Width: | Height: | Size: 8.2 KiB After Width: | Height: | Size: 6.8 KiB |
After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 62 KiB |
Before Width: | Height: | Size: 8.6 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 8.3 KiB |
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 21 KiB |
After Width: | Height: | Size: 5.8 KiB |
|
@ -6,8 +6,18 @@ kernelspec:
|
|||
display_name: Python 3
|
||||
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,48 +46,33 @@ Artist有两种类型:`primitives` 和`containers`。
|
|||
`container`是容器,即用来装基本要素的地方,包括**图形figure、坐标系Axes和坐标轴Axis**。他们之间的关系如下图所示:
|
||||

|
||||
|
||||
### 3. matplotlib标准用法
|
||||
matplotlib的标准使用流程为:
|
||||
1. 创建一个`Figure`实例
|
||||
2. 使用`Figure`实例创建一个或者多个`Axes`或`Subplot`实例
|
||||
3. 使用`Axes`实例的辅助方法来创建`primitive`
|
||||
可视化中常见的artist类可以参考下图这张表格,解释下每一列的含义。
|
||||
第一列表示matplotlib中子图上的辅助方法,可以理解为可视化中不同种类的图表类型,如柱状图,折线图,直方图等,这些图表都可以用这些辅助方法直接画出来,属于更高层级的抽象。
|
||||
|
||||
值得一提的是,Axes是一种容器,它可能是matplotlib API中最重要的类,并且我们大多数时间都花在和它打交道上。更具体的信息会在第三节容器小节说明。
|
||||
|
||||
一个流程示例及说明如下:
|
||||
|
||||
|
||||
```{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)
|
||||
```
|
||||
第二列表示不同图表背后的artist类,比如折线图方法`plot`在底层用到的就是`Line2D`这一artist类。
|
||||
|
||||
第三列是第二列的列表容器,例如所有在子图中创建的`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` 的几种类型:**曲线-Line2D,矩形-Rectangle,图像-image** (其中文本-Text较为复杂,会在之后单独详细说明。)
|
||||
本章重点介绍下 `primitives` 的几种类型:**曲线-Line2D,矩形-Rectangle,多边形-Polygon,图像-image**
|
||||
|
||||
|
||||
### 1. 2DLines
|
||||
在matplotlib中曲线的绘制,主要是通过类 `matplotlib.lines.Line2D` 来完成的。
|
||||
它的基类: `matplotlib.artist.Artist`
|
||||
|
||||
matplotlib中`线-line`的含义:它表示的可以是连接所有顶点的实线样式,也可以是每个顶点的标记。此外,这条线也会受到绘画风格的影响,比如,我们可以创建虚线种类的线。
|
||||
|
||||
|
@ -97,7 +92,7 @@ matplotlib中`线-line`的含义:它表示的可以是连接所有顶点的实
|
|||
+ **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的属性
|
||||
有三种方法可以用设置线的属性。
|
||||
|
@ -110,7 +105,6 @@ matplotlib中`线-line`的含义:它表示的可以是连接所有顶点的实
|
|||
|
||||
```{code-cell} ipython3
|
||||
# 1) 直接在plot()函数中设置
|
||||
import matplotlib.pyplot as plt
|
||||
x = range(0,5)
|
||||
y = [2,5,7,8,10]
|
||||
plt.plot(x,y, linewidth=10); # 设置线的粗细参数为10
|
||||
|
@ -118,23 +112,16 @@ plt.plot(x,y, linewidth=10); # 设置线的粗细参数为10
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
```{code-cell} ipython3
|
||||
# 2) 通过获得线对象,对线对象进行设置
|
||||
x = range(0,5)
|
||||
y = [2,5,7,8,10]
|
||||
line, = plt.plot(x, y, '-')
|
||||
line.set_antialiased(False) # 关闭抗锯齿功能
|
||||
line, = plt.plot(x, y, '-') # 这里等号坐标的line,是一个列表解包的操作,目的是获取plt.plot返回列表中的Line2D对象
|
||||
line.set_antialiased(False); # 关闭抗锯齿功能
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
```{code-cell} ipython3
|
||||
# 3) 获得线属性,使用setp()函数设置
|
||||
x = range(0,5)
|
||||
|
@ -153,17 +140,23 @@ plt.setp(lines, color='r', linewidth=10);
|
|||
|
||||
|
||||
|
||||
绘制直线line常用的方法有两种:
|
||||
+ **pyplot方法绘制**
|
||||
介绍两种绘制直线line常用的方法:
|
||||
+ **plot方法绘制**
|
||||
+ **Line2D对象绘制**
|
||||
|
||||
|
||||
|
||||
|
||||
```{code-cell} ipython3
|
||||
# 1. pyplot方法绘制
|
||||
import matplotlib.pyplot as plt
|
||||
# 1. plot方法绘制
|
||||
x = range(0,5)
|
||||
y = [2,5,7,8,10]
|
||||
plt.plot(x,y);
|
||||
y1 = [2,5,7,8,10]
|
||||
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
|
||||
# 2. Line2D对象绘制
|
||||
import matplotlib.pyplot as plt
|
||||
from matplotlib.lines import Line2D
|
||||
|
||||
fig = plt.figure()
|
||||
ax = fig.add_subplot(111)
|
||||
line = Line2D(x, y)
|
||||
ax.add_line(line)
|
||||
ax.set_xlim(min(x), max(x))
|
||||
ax.set_ylim(min(y), max(y))
|
||||
|
||||
plt.show()
|
||||
x = range(0,5)
|
||||
y1 = [2,5,7,8,10]
|
||||
y2= [3,6,8,9,11]
|
||||
fig,ax= plt.subplots()
|
||||
lines = [Line2D(x, y1), Line2D(x, y2,color='orange')] # 显式创建Line2D对象
|
||||
for line in lines:
|
||||
ax.add_line(line) # 使用add_line方法将创建的Line2D添加到子图中
|
||||
ax.set_xlim(0,4)
|
||||
ax.set_ylim(2, 11);
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
**2) errorbar绘制误差折线图**
|
||||
|
@ -210,33 +203,29 @@ pyplot里有个专门绘制误差线的功能,通过`errorbar`类实现,它
|
|||
|
||||
|
||||
```{code-cell} ipython3
|
||||
import numpy as np
|
||||
import matplotlib.pyplot as plt
|
||||
fig = plt.figure()
|
||||
x = np.arange(10)
|
||||
y = 2.5 * np.sin(x / 20 * np.pi)
|
||||
yerr = np.linspace(0.05, 0.2, 10)
|
||||
plt.errorbar(x, y + 3, yerr=yerr, label='both limits (default)');
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
### 2. patches
|
||||
matplotlib.patches.Patch类是二维图形类。它的基类是matplotlib.artist.Artist,它的构造函数:
|
||||
详细清单见 [matplotlib.patches API](https://matplotlib.org/api/patches_api.html)
|
||||
|
||||
|
||||
matplotlib.patches.Patch类是二维图形类,并且它是众多二维图形的父类,它的所有子类见[matplotlib.patches API](https://matplotlib.org/stable/api/patches_api.html) ,
|
||||
Patch类的构造函数:
|
||||
|
||||
>Patch(edgecolor=None, facecolor=None, color=None,
|
||||
linewidth=None, linestyle=None, antialiased=None,
|
||||
hatch=None, fill=True, capstyle=None, joinstyle=None,
|
||||
**kwargs)
|
||||
|
||||
本小节重点讲述三种最常见的子类,矩形,多边形和楔型。
|
||||
|
||||
|
||||
#### a. Rectangle-矩形
|
||||
`Rectangle`矩形类在官网中的定义是: 通过锚点xy及其宽度和高度生成。
|
||||
|
@ -244,7 +233,7 @@ Rectangle本身的主要比较简单,即xy控制锚点,width和height分别
|
|||
|
||||
> class matplotlib.patches.Rectangle(xy, width, height, angle=0.0, **kwargs)
|
||||
|
||||
在实际中最常见的矩形图是**`hist直方图`和`bar条形图`**。
|
||||
在实际中最常见的矩形图是`hist直方图`和`bar条形图`。
|
||||
|
||||
|
||||
|
||||
|
@ -266,27 +255,23 @@ hist绘制直方图
|
|||
|
||||
|
||||
```{code-cell} ipython3
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
x=np.random.randint(0,100,100) #生成[0-100)之间的100个数据,即 数据集
|
||||
bins=np.arange(0,101,10) #设置连续的边界值,即直方图的分布区间[0,10),[10,20)...
|
||||
plt.hist(x,bins,color='fuchsia',alpha=0.5)#alpha设置透明度,0为完全透明
|
||||
plt.xlabel('scores')
|
||||
plt.ylabel('count')
|
||||
plt.xlim(0,100)#设置x轴分布范围
|
||||
plt.show()
|
||||
plt.xlim(0,100); #设置x轴分布范围 plt.show()
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
`Rectangle`矩形类绘制直方图
|
||||
|
||||
|
||||
```{code-cell} ipython3
|
||||
import pandas as pd
|
||||
import re
|
||||
df = pd.DataFrame(columns = ['data'])
|
||||
df.loc[:,'data'] = x
|
||||
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)
|
||||
|
||||
#用Rectangle把hist绘制出来
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
fig = plt.figure()
|
||||
ax1 = fig.add_subplot(111)
|
||||
|
@ -309,12 +293,13 @@ for i in df_cnt.index:
|
|||
ax1.add_patch(rect)
|
||||
|
||||
ax1.set_xlim(0, 100)
|
||||
ax1.set_ylim(0, 16)
|
||||
plt.show()
|
||||
ax1.set_ylim(0, 16);
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
**2) bar-柱状图**
|
||||
|
@ -339,23 +324,18 @@ plt.show()
|
|||
|
||||
```{code-cell} ipython3
|
||||
# bar绘制柱状图
|
||||
import matplotlib.pyplot as plt
|
||||
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);
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
```{code-cell} ipython3
|
||||
# Rectangle矩形类绘制柱状图
|
||||
#import matplotlib.pyplot as plt
|
||||
fig = plt.figure()
|
||||
ax1 = fig.add_subplot(111)
|
||||
|
||||
|
@ -363,15 +343,17 @@ for i in range(1,17):
|
|||
rect = plt.Rectangle((i+0.25,0),0.5,i)
|
||||
ax1.add_patch(rect)
|
||||
ax1.set_xlim(0, 16)
|
||||
ax1.set_ylim(0, 16)
|
||||
plt.show()
|
||||
ax1.set_ylim(0, 16);
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#### b. Polygon-多边形
|
||||
matplotlib.patches.Polygon类是多边形类。其基类是matplotlib.patches.Patch,它的构造函数:
|
||||
matplotlib.patches.Polygon类是多边形类。它的构造函数:
|
||||
|
||||
>class matplotlib.patches.Polygon(xy, closed=True, **kwargs)
|
||||
|
||||
|
@ -388,7 +370,6 @@ matplotlib.patches.Polygon类中常用的是fill类,它是基于xy绘制一个
|
|||
|
||||
```{code-cell} ipython3
|
||||
# 用fill来绘制图形
|
||||
import matplotlib.pyplot as plt
|
||||
x = np.linspace(0, 5 * np.pi, 1000)
|
||||
y1 = np.sin(x)
|
||||
y2 = np.sin(2 * x)
|
||||
|
@ -396,9 +377,9 @@ plt.fill(x, y1, color = "g", alpha = 0.3);
|
|||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#### c. Wedge-契形
|
||||
|
@ -425,46 +406,45 @@ pie绘制饼状图
|
|||
|
||||
|
||||
```{code-cell} ipython3
|
||||
import matplotlib.pyplot as plt
|
||||
labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'
|
||||
sizes = [15, 30, 45, 10]
|
||||
explode = (0, 0.1, 0, 0)
|
||||
fig1, ax1 = plt.subplots()
|
||||
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.
|
||||
plt.show()
|
||||
ax1.axis('equal'); # Equal aspect ratio ensures that pie is drawn as a circle.
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
wedge绘制饼图
|
||||
|
||||
|
||||
```{code-cell} ipython3
|
||||
import matplotlib.pyplot as plt
|
||||
from matplotlib.patches import Circle, Wedge
|
||||
from matplotlib.collections import PatchCollection
|
||||
|
||||
fig = plt.figure()
|
||||
fig = plt.figure(figsize=(5,5))
|
||||
ax1 = fig.add_subplot(111)
|
||||
theta1 = 0
|
||||
sizes = [15, 30, 45, 10]
|
||||
patches = []
|
||||
patches += [
|
||||
Wedge((0.3, 0.3), .2, 0, 54), # Full circle
|
||||
Wedge((0.3, 0.3), .2, 54, 162), # Full ring
|
||||
Wedge((0.3, 0.3), .2, 162, 324), # Full sector
|
||||
Wedge((0.3, 0.3), .2, 324, 360), # Ring sector
|
||||
Wedge((0.5, 0.5), .4, 0, 54),
|
||||
Wedge((0.5, 0.5), .4, 54, 162),
|
||||
Wedge((0.5, 0.5), .4, 162, 324),
|
||||
Wedge((0.5, 0.5), .4, 324, 360),
|
||||
]
|
||||
colors = 100 * np.random.rand(len(patches))
|
||||
p = PatchCollection(patches, alpha=0.4)
|
||||
p = PatchCollection(patches, alpha=0.8)
|
||||
p.set_array(colors)
|
||||
ax1.add_collection(p)
|
||||
plt.show()
|
||||
ax1.add_collection(p);
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
### 3. collections
|
||||
|
@ -487,12 +467,13 @@ collections类是用来绘制一组对象的集合,collections有许多不同
|
|||
x = [0,2,4,6,8,10]
|
||||
y = [10]*len(x)
|
||||
s = [20*2**n for n in range(len(x))]
|
||||
plt.scatter(x,y,s=s)
|
||||
plt.show()
|
||||
plt.scatter(x,y,s=s) ;
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
### 4. images
|
||||
|
@ -506,8 +487,6 @@ imshow根据数组绘制图像
|
|||
|
||||
|
||||
```{code-cell} ipython3
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
methods = [None, 'none', 'nearest', 'bilinear', 'bicubic', 'spline16',
|
||||
'spline36', 'hanning', 'hamming', 'hermite', 'kaiser', 'quadric',
|
||||
'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.set_title(str(interp_method))
|
||||
|
||||
plt.tight_layout()
|
||||
plt.show()
|
||||
plt.tight_layout();
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## 三、对象容器 - Object container
|
||||
|
@ -535,7 +515,7 @@ plt.show()
|
|||
比如`Axes Artist`,它是一种容器,它包含了很多`primitives`,比如`Line2D`,`Text`;同时,它也有自身的属性,比如`xscal`,用来控制X轴是`linear`还是`log`的。
|
||||
|
||||
### 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`列表中。
|
||||
|
||||
|
||||
|
@ -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`的属性。
|
||||
|
@ -563,11 +546,12 @@ ax1 = fig.add_subplot(211)
|
|||
for ax in fig.axes:
|
||||
ax.grid(True)
|
||||
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
`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
|
||||
import numpy as np
|
||||
import matplotlib.pyplot as plt
|
||||
import matplotlib
|
||||
|
||||
fig = plt.figure()
|
||||
ax = fig.add_subplot(111)
|
||||
rect = ax.patch # axes的patch是一个Rectangle实例
|
||||
|
@ -600,6 +580,9 @@ rect.set_facecolor('green')
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
`Axes`有许多方法用于绘图,如`.plot()、.text()、.hist()、.imshow()`等方法用于创建大多数常见的`primitive`(如`Line2D,Rectangle,Text,Image`等等)。在`primitives`中已经涉及,不再赘述。
|
||||
|
||||
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_markersize(25) # marker大小
|
||||
line.set_markeredgewidth(2)# marker粗细
|
||||
|
||||
plt.show()
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
### 4. Tick容器
|
||||
|
||||
|
@ -720,10 +699,6 @@ x轴分为上下两个,因此tick1对应下侧的轴;tick2对应上侧的轴
|
|||
|
||||
|
||||
```{code-cell} ipython3
|
||||
import numpy as np
|
||||
import matplotlib.pyplot as plt
|
||||
import matplotlib
|
||||
|
||||
fig, ax = plt.subplots()
|
||||
ax.plot(100*np.random.rand(20))
|
||||
|
||||
|
@ -734,27 +709,36 @@ ax.yaxis.set_major_formatter(formatter)
|
|||
# 设置ticker的参数,右侧为主轴,颜色为绿色
|
||||
ax.yaxis.set_tick_params(which='major', labelcolor='green',
|
||||
labelleft=False, labelright=True);
|
||||
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## 思考题
|
||||
|
||||
- primitives 和 container的区别和联系是什么,分别用于控制可视化图表中的哪些要素
|
||||
|
||||
- 使用提供的drug数据集,对第一列yyyy和第二列state分组求和,画出下面折线图。PA加粗标黄,其他为灰色。
|
||||
图标题和横纵坐标轴标题,以及线的文本暂不做要求。
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
- 分别用一组长方形柱和填充面积的方式模仿画出下图,函数 y = -1 * (x - 2) * (x - 8) +10 在区间[2,9]的积分面积
|
||||

|
||||

|
||||
|
||||
## 参考资料
|
||||
[1. matplotlib设计的基本逻辑](https://zhuanlan.zhihu.com/p/32693665)
|
||||
[2. matplotlib.artist api](https://matplotlib.org/api/artist_api.html)
|
||||
[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)
|
||||
[2. AI算法工程师手册](https://www.bookstack.cn/read/huaxiaozhuan-ai/spilt.2.333f5abdbabf383d.md)
|
||||
|
||||
|
||||
```{code-cell} ipython3
|
||||
|
||||
```
|
||||
|
||||
|
|
|
@ -190,9 +190,9 @@
|
|||
<div class="container">
|
||||
<p>
|
||||
|
||||
By Datawhale<br/>
|
||||
By Datawhale数据可视化开源小组<br/>
|
||||
|
||||
© Copyright © Copyright 2020.<br/>
|
||||
© Copyright © Copyright 2021.<br/>
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
|
|
@ -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#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#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>
|
||||
</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>
|
||||
|
@ -247,9 +248,9 @@
|
|||
<div class="container">
|
||||
<p>
|
||||
|
||||
By Datawhale<br/>
|
||||
By Datawhale数据可视化开源小组<br/>
|
||||
|
||||
© Copyright © Copyright 2020.<br/>
|
||||
© Copyright © Copyright 2021.<br/>
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
|
|
@ -209,9 +209,9 @@
|
|||
<div class="container">
|
||||
<p>
|
||||
|
||||
By Datawhale<br/>
|
||||
By Datawhale数据可视化开源小组<br/>
|
||||
|
||||
© Copyright © Copyright 2020.<br/>
|
||||
© Copyright © Copyright 2021.<br/>
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
|
|
@ -397,9 +397,9 @@
|
|||
<div class="container">
|
||||
<p>
|
||||
|
||||
By Datawhale<br/>
|
||||
By Datawhale数据可视化开源小组<br/>
|
||||
|
||||
© Copyright © Copyright 2020.<br/>
|
||||
© Copyright © Copyright 2021.<br/>
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
|
|
@ -473,9 +473,9 @@
|
|||
<div class="container">
|
||||
<p>
|
||||
|
||||
By Datawhale<br/>
|
||||
By Datawhale数据可视化开源小组<br/>
|
||||
|
||||
© Copyright © Copyright 2020.<br/>
|
||||
© Copyright © Copyright 2021.<br/>
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
|
|
@ -201,11 +201,6 @@
|
|||
2. Artist的分类
|
||||
</a>
|
||||
</li>
|
||||
<li class="toc-h3 nav-item toc-entry">
|
||||
<a class="reference internal nav-link" href="#matplotlib">
|
||||
3. matplotlib标准用法
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toc-h2 nav-item toc-entry">
|
||||
|
@ -293,6 +288,11 @@
|
|||
</li>
|
||||
<li class="toc-h2 nav-item toc-entry">
|
||||
<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>
|
||||
</li>
|
||||
|
@ -307,6 +307,20 @@
|
|||
|
||||
<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="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>
|
||||
<div class="section" id="id2">
|
||||
|
@ -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">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>
|
||||
</div>
|
||||
<div class="section" id="matplotlib">
|
||||
<h3>3. matplotlib标准用法<a class="headerlink" href="#matplotlib" title="永久链接至标题">¶</a></h3>
|
||||
<p>matplotlib的标准使用流程为:</p>
|
||||
<ol class="simple">
|
||||
<li><p>创建一个<code class="docutils literal notranslate"><span class="pre">Figure</span></code>实例</p></li>
|
||||
<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>
|
||||
<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>
|
||||
</ol>
|
||||
<p>值得一提的是,Axes是一种容器,它可能是matplotlib API中最重要的类,并且我们大多数时间都花在和它打交道上。更具体的信息会在第三节容器小节说明。</p>
|
||||
<p>一个流程示例及说明如下:</p>
|
||||
<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">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
|
||||
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
||||
|
||||
<span class="c1"># step 1 </span>
|
||||
<span class="c1"># 我们用 matplotlib.pyplot.figure() 创建了一个Figure实例</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="c1"># step 2</span>
|
||||
<span class="c1"># 然后用Figure实例创建了一个两行一列(即可以有两个subplot)的绘图区,并同时在第一个位置创建了一个subplot</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">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>
|
||||
|
||||
<span class="c1"># step 3</span>
|
||||
<span class="c1"># 然后用Axes实例的方法画了一条曲线</span>
|
||||
<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>
|
||||
<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>
|
||||
<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">'blue'</span><span class="p">,</span> <span class="n">lw</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell_output docutils container">
|
||||
<img alt="../_images/index_1_0.png" src="../_images/index_1_0.png" />
|
||||
</div>
|
||||
</div>
|
||||
<p>可视化中常见的artist类可以参考下图这张表格,解释下每一列的含义。<br />
|
||||
第一列表示matplotlib中子图上的辅助方法,可以理解为可视化中不同种类的图表类型,如柱状图,折线图,直方图等,这些图表都可以用这些辅助方法直接画出来,属于更高层级的抽象。</p>
|
||||
<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>第三列是第二列的列表容器,例如所有在子图中创建的<code class="docutils literal notranslate"><span class="pre">Line2D</span></code>对象都会被自动收集到<code class="docutils literal notranslate"><span class="pre">ax.lines</span></code>返回的列表中。</p>
|
||||
<p>下一节的具体案例更清楚地阐释了这三者的关系,其实在很多时候,我们只用记住第一列的辅助方法进行绘图即可,而无需关注具体底层使用了哪些类,但是了解底层类有助于我们绘制一些复杂的图表,因此也很有必要了解。</p>
|
||||
<table class="colwidths-auto table">
|
||||
<thead>
|
||||
<tr class="row-odd"><th class="head"><p>Axes helper method</p></th>
|
||||
<th class="head"><p>Artist</p></th>
|
||||
<th class="head"><p>Container</p></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">bar</span></code> - bar charts</p></td>
|
||||
<td><p><code class="docutils literal notranslate"><span class="pre">Rectangle</span></code></p></td>
|
||||
<td><p>ax.patches</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">errorbar</span></code> - error bar plots</p></td>
|
||||
<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>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">fill</span></code> - shared area</p></td>
|
||||
<td><p><code class="docutils literal notranslate"><span class="pre">Polygon</span></code></p></td>
|
||||
<td><p>ax.patches</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">hist</span></code> - histograms</p></td>
|
||||
<td><p><code class="docutils literal notranslate"><span class="pre">Rectangle</span></code></p></td>
|
||||
<td><p>ax.patches</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">imshow</span></code> - image data</p></td>
|
||||
<td><p><code class="docutils literal notranslate"><span class="pre">AxesImage</span></code></p></td>
|
||||
<td><p>ax.images</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">plot</span></code> - xy plots</p></td>
|
||||
<td><p><code class="docutils literal notranslate"><span class="pre">Line2D</span></code></p></td>
|
||||
<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 class="section" id="primitives">
|
||||
<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> 的几种类型:<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">
|
||||
<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 />
|
||||
它的基类: <code class="docutils literal notranslate"><span class="pre">matplotlib.artist.Artist</span></code></p>
|
||||
<p>在matplotlib中曲线的绘制,主要是通过类 <code class="docutils literal notranslate"><span class="pre">matplotlib.lines.Line2D</span></code> 来完成的。</p>
|
||||
<p>matplotlib中<code class="docutils literal notranslate"><span class="pre">线-line</span></code>的含义:它表示的可以是连接所有顶点的实线样式,也可以是每个顶点的标记。此外,这条线也会受到绘画风格的影响,比如,我们可以创建虚线种类的线。</p>
|
||||
<p>它的构造函数:</p>
|
||||
<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>markersize</strong>:标记的size</p></li>
|
||||
</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">
|
||||
<h4>a. 如何设置Line2D的属性<a class="headerlink" href="#a-line2d" title="永久链接至标题">¶</a></h4>
|
||||
<p>有三种方法可以用设置线的属性。</p>
|
||||
|
@ -405,7 +425,6 @@
|
|||
<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"># 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">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>
|
||||
|
@ -413,7 +432,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<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 class="cell docutils container">
|
||||
|
@ -421,13 +440,13 @@
|
|||
<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">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">'-'</span><span class="p">)</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="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">'-'</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>
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<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 class="cell docutils container">
|
||||
|
@ -441,7 +460,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<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>
|
||||
|
@ -451,18 +470,45 @@
|
|||
<li><p>绘制直线line</p></li>
|
||||
<li><p>errorbar绘制误差折线图</p></li>
|
||||
</ol>
|
||||
<p>绘制直线line常用的方法有两种:</p>
|
||||
<p>介绍两种绘制直线line常用的方法:</p>
|
||||
<ul class="simple">
|
||||
<li><p><strong>pyplot方法绘制</strong></p></li>
|
||||
<li><p><strong>plot方法绘制</strong></p></li>
|
||||
<li><p><strong>Line2D对象绘制</strong></p></li>
|
||||
</ul>
|
||||
<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"># 1. pyplot方法绘制</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="c1"># 1. plot方法绘制</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">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">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">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>[<matplotlib.lines.Line2D object at 0x000001EBFE710A90>, <matplotlib.lines.Line2D object at 0x000001EBFE710E20>]
|
||||
</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">'orange'</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>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -470,27 +516,8 @@
|
|||
<img alt="../_images/index_7_01.png" src="../_images/index_7_01.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="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><br />
|
||||
</p>
|
||||
<p><strong>2) errorbar绘制误差折线图</strong><br />
|
||||
pyplot里有个专门绘制误差线的功能,通过<code class="docutils literal notranslate"><span class="pre">errorbar</span></code>类实现,它的构造函数:</p>
|
||||
<blockquote>
|
||||
|
@ -509,9 +536,7 @@ pyplot里有个专门绘制误差线的功能,通过<code class="docutils lite
|
|||
<p>绘制errorbar</p>
|
||||
<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">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>
|
||||
<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">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">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 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>
|
||||
<p><br />
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="patches">
|
||||
<h3>2. patches<a class="headerlink" href="#patches" title="永久链接至标题">¶</a></h3>
|
||||
<p>matplotlib.patches.Patch类是二维图形类。它的基类是matplotlib.artist.Artist,它的构造函数:<br />
|
||||
详细清单见 <a class="reference external" href="https://matplotlib.org/api/patches_api.html">matplotlib.patches API</a></p>
|
||||
<p>matplotlib.patches.Patch类是二维图形类,并且它是众多二维图形的父类,它的所有子类见<a class="reference external" href="https://matplotlib.org/stable/api/patches_api.html">matplotlib.patches API</a> ,<br />
|
||||
Patch类的构造函数:</p>
|
||||
<blockquote>
|
||||
<div><p>Patch(edgecolor=None, facecolor=None, color=None,
|
||||
linewidth=None, linestyle=None, antialiased=None,
|
||||
hatch=None, fill=True, capstyle=None, joinstyle=None,
|
||||
**kwargs)</p>
|
||||
</div></blockquote>
|
||||
<p>本小节重点讲述三种最常见的子类,矩形,多边形和楔型。</p>
|
||||
<div class="section" id="a-rectangle">
|
||||
<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及其宽度和高度生成。
|
||||
|
@ -542,7 +570,7 @@ Rectangle本身的主要比较简单,即xy控制锚点,width和height分别
|
|||
<blockquote>
|
||||
<div><p>class matplotlib.patches.Rectangle(xy, width, height, angle=0.0, **kwargs)</p>
|
||||
</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>
|
||||
<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>
|
||||
|
@ -561,28 +589,24 @@ Rectangle本身的主要比较简单,即xy控制锚点,width和height分别
|
|||
<p>hist绘制直方图</p>
|
||||
<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">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</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>
|
||||
<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="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">'fuchsia'</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">'scores'</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">'count'</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">show</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轴分布范围 plt.show()</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<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>
|
||||
<p></p>
|
||||
<p><code class="docutils literal notranslate"><span class="pre">Rectangle</span></code>矩形类绘制直方图</p>
|
||||
<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">pandas</span> <span class="k">as</span> <span class="nn">pd</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">'data'</span><span class="p">])</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">'data'</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">'data'</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">'fenzu'</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">'data'</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="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">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">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">plt</span><span class="o">.</span><span class="n">show</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>
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<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>
|
||||
<p></p>
|
||||
<p></p>
|
||||
<p><strong>2) bar-柱状图</strong></p>
|
||||
<blockquote>
|
||||
<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_input docutils container">
|
||||
<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">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">'yellow'</span><span class="p">,</span> <span class="n">edgecolor</span><span class="o">=</span><span class="s1">'red'</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s1">'The First Bar'</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>
|
||||
</div>
|
||||
</div>
|
||||
<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>
|
||||
<p></p>
|
||||
<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"># 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">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">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_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>
|
||||
<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>
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -665,10 +687,12 @@ Rectangle本身的主要比较简单,即xy控制锚点,width和height分别
|
|||
<img alt="../_images/index_17_01.png" src="../_images/index_17_01.png" />
|
||||
</div>
|
||||
</div>
|
||||
<p></p>
|
||||
<p></p>
|
||||
</div>
|
||||
<div class="section" id="b-polygon">
|
||||
<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>
|
||||
<div><p>class matplotlib.patches.Polygon(xy, closed=True, **kwargs)</p>
|
||||
</div></blockquote>
|
||||
|
@ -682,7 +706,6 @@ closed为True则指定多边形将起点和终点重合从而显式关闭多边
|
|||
<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"># 用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">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>
|
||||
|
@ -694,6 +717,8 @@ closed为True则指定多边形将起点和终点重合从而显式关闭多边
|
|||
<img alt="../_images/index_19_0.png" src="../_images/index_19_0.png" />
|
||||
</div>
|
||||
</div>
|
||||
<p></p>
|
||||
<p></p>
|
||||
</div>
|
||||
<div class="section" id="c-wedge">
|
||||
<h4>c. Wedge-契形<a class="headerlink" href="#c-wedge" title="永久链接至标题">¶</a></h4>
|
||||
|
@ -719,14 +744,12 @@ closed为True则指定多边形将起点和终点重合从而显式关闭多边
|
|||
<p>pie绘制饼状图</p>
|
||||
<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">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
|
||||
<span class="n">labels</span> <span class="o">=</span> <span class="s1">'Frogs'</span><span class="p">,</span> <span class="s1">'Hogs'</span><span class="p">,</span> <span class="s1">'Dogs'</span><span class="p">,</span> <span class="s1">'Logs'</span>
|
||||
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">labels</span> <span class="o">=</span> <span class="s1">'Frogs'</span><span class="p">,</span> <span class="s1">'Hogs'</span><span class="p">,</span> <span class="s1">'Dogs'</span><span class="p">,</span> <span class="s1">'Logs'</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">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">'</span><span class="si">%1.1f%%</span><span class="s1">'</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">'equal'</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>
|
||||
<span class="n">ax1</span><span class="o">.</span><span class="n">axis</span><span class="p">(</span><span class="s1">'equal'</span><span class="p">);</span> <span class="c1"># Equal aspect ratio ensures that pie is drawn as a circle. </span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -734,29 +757,26 @@ closed为True则指定多边形将起点和终点重合从而显式关闭多边
|
|||
<img alt="../_images/index_21_0.png" src="../_images/index_21_0.png" />
|
||||
</div>
|
||||
</div>
|
||||
<p></p>
|
||||
<p></p>
|
||||
<p>wedge绘制饼图</p>
|
||||
<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">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</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>
|
||||
<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="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">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">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.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.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.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">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.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.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.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="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">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>
|
||||
<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>
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -764,6 +784,8 @@ closed为True则指定多边形将起点和终点重合从而显式关闭多边
|
|||
<img alt="../_images/index_23_0.png" src="../_images/index_23_0.png" />
|
||||
</div>
|
||||
</div>
|
||||
<p></p>
|
||||
<p></p>
|
||||
</div>
|
||||
</div>
|
||||
<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">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">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">show</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>
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -795,6 +816,8 @@ closed为True则指定多边形将起点和终点重合从而显式关闭多边
|
|||
<img alt="../_images/index_25_0.png" src="../_images/index_25_0.png" />
|
||||
</div>
|
||||
</div>
|
||||
<p></p>
|
||||
<p></p>
|
||||
</div>
|
||||
<div class="section" id="images">
|
||||
<h3>4. images<a class="headerlink" href="#images" title="永久链接至标题">¶</a></h3>
|
||||
|
@ -809,9 +832,7 @@ closed为True则指定多边形将起点和终点重合从而显式关闭多边
|
|||
<p>使用imshow画图时首先需要传入一个数组,数组对应的是空间内的像素位置和像素点的值,interpolation参数可以设置不同的差值方法,具体效果如下。</p>
|
||||
<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">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</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">'none'</span><span class="p">,</span> <span class="s1">'nearest'</span><span class="p">,</span> <span class="s1">'bilinear'</span><span class="p">,</span> <span class="s1">'bicubic'</span><span class="p">,</span> <span class="s1">'spline16'</span><span class="p">,</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">'none'</span><span class="p">,</span> <span class="s1">'nearest'</span><span class="p">,</span> <span class="s1">'bilinear'</span><span class="p">,</span> <span class="s1">'bicubic'</span><span class="p">,</span> <span class="s1">'spline16'</span><span class="p">,</span>
|
||||
<span class="s1">'spline36'</span><span class="p">,</span> <span class="s1">'hanning'</span><span class="p">,</span> <span class="s1">'hamming'</span><span class="p">,</span> <span class="s1">'hermite'</span><span class="p">,</span> <span class="s1">'kaiser'</span><span class="p">,</span> <span class="s1">'quadric'</span><span class="p">,</span>
|
||||
<span class="s1">'catrom'</span><span class="p">,</span> <span class="s1">'gaussian'</span><span class="p">,</span> <span class="s1">'bessel'</span><span class="p">,</span> <span class="s1">'mitchell'</span><span class="p">,</span> <span class="s1">'sinc'</span><span class="p">,</span> <span class="s1">'lanczos'</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">'viridis'</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">show</span><span class="p">()</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">tight_layout</span><span class="p">();</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -834,6 +854,8 @@ closed为True则指定多边形将起点和终点重合从而显式关闭多边
|
|||
<img alt="../_images/index_27_0.png" src="../_images/index_27_0.png" />
|
||||
</div>
|
||||
</div>
|
||||
<p></p>
|
||||
<p></p>
|
||||
</div>
|
||||
</div>
|
||||
<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>
|
||||
<div class="section" id="figure">
|
||||
<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>
|
||||
<div class="cell 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" />
|
||||
</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>比如下面的遍历axes里的内容,并且添加网格线:</p>
|
||||
<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="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>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -880,6 +900,8 @@ closed为True则指定多边形将起点和终点重合从而显式关闭多边
|
|||
<img alt="../_images/index_31_0.png" src="../_images/index_31_0.png" />
|
||||
</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><strong>Figure容器的常见属性:</strong><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>
|
||||
<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">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>
|
||||
<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">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">set_facecolor</span><span class="p">(</span><span class="s1">'green'</span><span class="p">)</span>
|
||||
|
@ -910,6 +928,7 @@ closed为True则指定多边形将起点和终点重合从而显式关闭多边
|
|||
<img alt="../_images/index_33_0.png" src="../_images/index_33_0.png" />
|
||||
</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">Line2D,Rectangle,Text,Image</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>你不应该直接通过<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 />
|
||||
会在下面章节详细说明。</p>
|
||||
<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">patch</span></code>: Axes所在的矩形实例
|
||||
<code class="docutils literal notranslate"><span class="pre">collections</span></code>: Collection实例
|
||||
<code class="docutils literal notranslate"><span class="pre">images</span></code>: Axes图像
|
||||
<code class="docutils literal notranslate"><span class="pre">legends</span></code>: Legend 实例
|
||||
<code class="docutils literal notranslate"><span class="pre">lines</span></code>: Line2D 实例
|
||||
<code class="docutils literal notranslate"><span class="pre">patches</span></code>: Patch 实例
|
||||
<code class="docutils literal notranslate"><span class="pre">texts</span></code>: Text 实例
|
||||
<code class="docutils literal notranslate"><span class="pre">xaxis</span></code>: matplotlib.axis.XAxis 实例
|
||||
<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所在的矩形实例<br />
|
||||
<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图像<br />
|
||||
<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 实例<br />
|
||||
<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 实例<br />
|
||||
<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>
|
||||
</div>
|
||||
<div class="section" id="axis">
|
||||
|
@ -967,6 +986,7 @@ closed为True则指定多边形将起点和终点重合从而显式关闭多边
|
|||
<img alt="../_images/index_35_1.png" src="../_images/index_35_1.png" />
|
||||
</div>
|
||||
</div>
|
||||
<p></p>
|
||||
<p>下面的例子展示了如何调整一些轴和刻度的属性(忽略美观度,仅作调整参考):</p>
|
||||
<div class="cell 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">'green'</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_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>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -999,6 +1017,7 @@ closed为True则指定多边形将起点和终点重合从而显式关闭多边
|
|||
<img alt="../_images/index_37_0.png" src="../_images/index_37_0.png" />
|
||||
</div>
|
||||
</div>
|
||||
<p></p>
|
||||
</div>
|
||||
<div class="section" id="tick">
|
||||
<h3>4. Tick容器<a class="headerlink" href="#tick" title="永久链接至标题">¶</a></h3>
|
||||
|
@ -1015,11 +1034,7 @@ x轴分为上下两个,因此tick1对应下侧的轴;tick2对应上侧的轴
|
|||
<p>下面的例子展示了,如何将Y轴右边轴设为主轴,并将标签设置为美元符号且为绿色:</p>
|
||||
<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">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>
|
||||
<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="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>
|
||||
|
@ -1036,14 +1051,27 @@ x轴分为上下两个,因此tick1对应下侧的轴;tick2对应上侧的轴
|
|||
<img alt="../_images/index_39_0.png" src="../_images/index_39_0.png" />
|
||||
</div>
|
||||
</div>
|
||||
<p></p>
|
||||
</div>
|
||||
</div>
|
||||
<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 />
|
||||
<a class="reference external" href="https://matplotlib.org/api/artist_api.html">2. matplotlib.artist api</a><br />
|
||||
<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>
|
||||
<a class="reference external" href="https://www.bookstack.cn/read/huaxiaozhuan-ai/spilt.2.333f5abdbabf383d.md">2. AI算法工程师手册</a></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -1064,9 +1092,9 @@ x轴分为上下两个,因此tick1对应下侧的轴;tick2对应上侧的轴
|
|||
<div class="container">
|
||||
<p>
|
||||
|
||||
By Datawhale<br/>
|
||||
By Datawhale数据可视化开源小组<br/>
|
||||
|
||||
© Copyright © Copyright 2020.<br/>
|
||||
© Copyright © Copyright 2021.<br/>
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
|
|
@ -289,7 +289,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<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 class="cell docutils container">
|
||||
|
@ -349,7 +349,7 @@ ytick.labelsize : 16</p>
|
|||
</div>
|
||||
</div>
|
||||
<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>
|
||||
|
@ -365,7 +365,7 @@ ytick.labelsize : 16</p>
|
|||
</div>
|
||||
</div>
|
||||
<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 class="cell docutils container">
|
||||
|
@ -377,7 +377,7 @@ ytick.labelsize : 16</p>
|
|||
</div>
|
||||
</div>
|
||||
<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>
|
||||
<p>另外matplotlib也还提供了了一种更便捷的修改样式方式,可以一次性修改多个样式。</p>
|
||||
|
@ -389,7 +389,7 @@ ytick.labelsize : 16</p>
|
|||
</div>
|
||||
</div>
|
||||
<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>
|
||||
|
@ -538,9 +538,9 @@ ytick.labelsize : 16</p>
|
|||
<div class="container">
|
||||
<p>
|
||||
|
||||
By Datawhale<br/>
|
||||
By Datawhale数据可视化开源小组<br/>
|
||||
|
||||
© Copyright © Copyright 2020.<br/>
|
||||
© Copyright © Copyright 2021.<br/>
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
|
|
@ -391,7 +391,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<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>
|
||||
<p></p>
|
||||
|
@ -493,7 +493,7 @@ ylabel方式类似,这里不重复写出。<br />
|
|||
</div>
|
||||
</div>
|
||||
<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>
|
||||
<p></p>
|
||||
|
@ -523,7 +523,7 @@ annotate的参数非常复杂,这里仅仅展示一个简单的例子,更多
|
|||
</div>
|
||||
</div>
|
||||
<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>
|
||||
<p></p>
|
||||
|
@ -557,7 +557,7 @@ annotate的参数非常复杂,这里仅仅展示一个简单的例子,更多
|
|||
</div>
|
||||
</div>
|
||||
<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>
|
||||
<p></p>
|
||||
|
@ -909,9 +909,9 @@ ax.legend(loc='upper center') 等同于ax.legend(loc=9)</p>
|
|||
<div class="container">
|
||||
<p>
|
||||
|
||||
By Datawhale<br/>
|
||||
By Datawhale数据可视化开源小组<br/>
|
||||
|
||||
© Copyright © Copyright 2020.<br/>
|
||||
© Copyright © Copyright 2021.<br/>
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
|