Matplotlib的使用
Matplotlib库由各种可视化类构成,内部结构复杂,受Matlab启发。
matplotlib.pyplot是绘制各类可视化图形的命令子库,相当于快捷方式。
import matplotlib.pyplot as plt
pyplot的plot()函数
plt.plot(x, y, format_string, **kwargs)
- x : X轴数据,列表或数组,可选。plt.plot()只有一个输入列表或数组时,参数被当作Y轴,X轴以索引自动生成。
- y : Y轴数据,列表或数组
- format_string: 控制曲线的格式字符串,可选
由颜色字符、风格字符和标记字符组成,颜色字符、风格字符和标记字符可以组合使用。
颜色字符 | 说明 | 颜色字符 | 说明 | |
---|---|---|---|---|
'b' | 蓝色 | 'm' | 洋红色 magenta | |
'g' | 绿色 | 'y' | 黄色 | |
'r' | 红色 | 'k' | 黑色 | |
'c' | 青绿色 cyan | 'w' | 白色 | |
'#008000' | RGB某颜色 | '0.8' | 灰度值字符串 |
风格字符 | 说明 |
---|---|
'-' | 实线 |
'--' | 破折线 |
'-.' | 点划线 |
':' | 虚线 |
'' ' ' | 无线条 |
标记字符 | 说明 | 标记字符 | 说明 | 标记字符 | 说明 | ||
---|---|---|---|---|---|---|---|
'.' | 点标记 | '1' | 下花三角标记 | 'h' | 竖六边形标记 | ||
',' | 像素标记(极小点) | '2' | 上花三角标记 | 'H' | 横六边形标记 | ||
'o' | 实心圈标记 | '3' | 左花三角标记 | '+' | 十字标记 | ||
'v' | 倒三角标记 | '4' | 右花三角标记 | 'x' | x标记 | ||
'^' | 上三角标记 | 's' | 实心方形标记 | 'D' | 菱形标记 | ||
'>' | 右三角标记 | 'p' | 实心五角标记 | 'd' | 瘦菱形标记 | ||
'<' | 左三角标记 | '*' | 星形标记 | '|' | 垂直线标记 |
color : 控制颜色, color='green'
linestyle : 线条风格, linestyle='dashed'
marker : 标记风格, marker='o'
markerfacecolor: 标记颜色, markerfacecolor='blue'
markersize : 标记尺寸, markersize=20
...
- **kwargs : 第二组或更多(x,y,format_string)
当绘制多条曲线时,各条曲线的x不能省略
pyplot的绘图区域
简单的绘图区域
plt.subplot(nrows, ncols, plot_number)
在全局绘图区域中创建一个分区体系,并定位到一个子绘图区域。
复杂的绘图区域
- plt.subplot2grid()
plt.subplot2grid(GridSpec, CurSpec, colspan=1, rowspan=1)
理念:设定网格,选中网格,确定选中行列区域数量,编号从0开始
实例:
plt.subplot2grid((3, 3), (1, 0), colspan=2) #ax2
- GridSpec类
实例:
import matplotlib.gridspec as gridspec
gs = gridspec.GridSpec(3, 3)
ax1 = plt.subplot(gs[0, :])
ax2 = plt.subplot(gs[1, :-1])
ax3 = plt.subplot(gs[1:, -1])
ax4 = plt.subplot(gs[2, 0])
ax5 = plt.subplot(gs[2, 1])
pyplot的中文显示
第一种方法
pyplot并不默认支持中文显示,需要rcParams修改字体实现
import matplotlib
matplotlib.rcParams['font.family'] = 'SimHei'
rcParams的属性:
属性 | 说明 |
---|---|
'font.family' | 用于显示字体的名字 |
'font.style' | 字体风格,正常'normal'或斜体'italic' |
'font.size' | 字体大小,整数字号或者'large'、'x‐small' |
中文字体的种类:
rcParams['font.family']
中文字体 | 说明 |
---|---|
'SimHei' | 中文黑体 |
'Kaiti' | 中文楷体 |
'LiSu' | 中文隶书 |
'FangSong' | 中文仿宋 |
'YouYuan' | 中文幼圆 |
'STSong' | 华文宋体 |
第二种方法
推荐第二种方法。
在有中文输出的地方,增加一个属性:fontproperties.
plt.xlabel('横轴:时间', fontproperties='SimHei', fontsize=20)
pyplot的文本显示
函数 | 说明 |
---|---|
plt.xlabel() | 对X轴增加文本标签 |
plt.ylabel() | 对Y轴增加文本标签 |
plt.title() | 对图形整体增加文本标签 |
plt.text() | 在任意位置增加文本 |
plt.annotate() | 在图形中增加带箭头的注解 |
import numpy as np
import matplotlib.pyplot as plt
a = np.arange(0.0, 5.0, 0.02)
plt.plot(a, np.cos(2*np.pi*a), 'r--')
plt.xlabel('横轴:时间', fontproperties='SimHei', fontsize=15, color='green')
plt.ylabel('纵轴:时间', fontproperties='SimHei', fontsize=15)
plt.title(r'正弦波实例 $y=cos(2\pi x)$', fontproperties='SimHei', fontsize=25)
plt.text(2, 1, r'$\mu=100$', fontsize=15)
plt.axis([-1, 6, -2, 2])
plt.grid(True)
plt.show()
plt.axis()函数给出了形如[xmin,xmax,ymin,ymax]的列表,指定了坐标轴的范围。
plt.grid()控制网格显示。
plt.savefig()将输出图形存储为文件,默认PNG格式,可以通过dpi修改输出质量
plt.savefig('test', dpi=600)
Reference:
中国大学MOOC北京理工大学Python数据分析与展示课程嵩天老师课件
课程主页
网友评论