【python数据分析05】——matplotlib绘图基础语法

matplotlib绘图基础语法

  • 前言
  • [1 pyplot基础语法](#1 pyplot基础语法)
    • [1.1 创建画布与创建子图](#1.1 创建画布与创建子图)
    • [1.2 添加画布内容](#1.2 添加画布内容)
    • [1.3 保存与显示图形](#1.3 保存与显示图形)
    • [1.4 设置pyplot的动态rc参数](#1.4 设置pyplot的动态rc参数)

前言

matplotlib中应用最广的是matplotlib.pyplot模块,这个模块是一个命令风格函数的集合。

1 pyplot基础语法

大部分pyplot图形绘制遵循一个流程,使用这个流程可以完成大部分图形的绘制。pyplot绘图流程主要分为3个部分,如下所示:

1.1 创建画布与创建子图

这一部分主要作用是构建出一张空白画布,并可以选择是否将整个画布划分为多个部分,方便在同一幅图上绘制多个图形的情况。当只需要绘制一幅简单的图形时,这部分内容可以省略。

pyplot创建画布与选中子图的常用函数如下

函数名称 作用
plt.figure 创建一个空白画布,可以指定画布大小、像素
figure.add 创建并选中子图,可以指定子图的行数、列数和选中图片的编号

1.2 添加画布内容

这是绘图的主体部分。添加标题、坐标轴名称、会议图形等是并列的,没有先后顺利。但是添加图例一定要在绘制图形之后。各类标签如下所示:

函数名称 作用
plt.title 标题,可指定标题的名称、位置、颜色、字体大小等参数
plt.xlabel 添加x轴名称,可以指定位置、颜色、字体大小等参数
plt.ylabel 添加y轴名称,可以指定位置、颜色、字体大小等参数
plt.xlim 指定x轴范围,只能确定一个数值区间,而无法使用字符串标识
plt.ylim 指定y轴范围,只能确定一个数值区间,而无法使用字符串标识
plt.xticks 指定x轴刻度的数目与取值
plt.yticks 指定y轴刻度的数目与取值
plt.legend 指定当前图形的图例,可以指定位置、颜色、字体大小等参数

1.3 保存与显示图形

函数名称 作用
plt.savefig 保存绘制的图像,可以指定图形的分辨率、边缘的颜色等参数
plt.show 在本机显示图形

不含子图绘制的标准绘图流程示例

python 复制代码
import numpy as np
import matplotlib.pyplot as plt
## %matplotlib inline表示在行中显示图片,在命令行运行报错
data = np.arange(0,1.1,0.01)
plt.title('lines') ## 添加标题
plt.xlabel('x')## 添加x轴的名称
plt.ylabel('y')## 添加y轴的名称
plt.xlim((0,1))## 确定x轴范围
plt.ylim((0,1))## 确定y轴范围
plt.xticks([0,0.2,0.4,0.6,0.8,1])## 规定x轴刻度
plt.yticks([0,0.2,0.4,0.6,0.8,1])## 确定y轴刻度
plt.plot(data,data**2)## 添加y=x^2曲线
plt.plot(data,data**4)## 添加y=x^4曲线
plt.legend(['y=x^2','y=x^4'])
plt.savefig('y=x^2.png')
plt.show()

输出:

包含子图绘制的示例

python 复制代码
rad = np.arange(0,np.pi*2,0.01)
##第一幅子图
p1 = plt.figure(figsize=(8,6),dpi=80)## 确定画布大小
ax1 = p1.add_subplot(2,1,1)## 创建一个两行1列的子图,并开始绘制第一幅
plt.title('lines')## 添加标题
plt.xlabel('x')## 添加x轴的名称
plt.ylabel('y')## 添加y轴的名称
plt.xlim((0,1))## 确定x轴范围
plt.ylim((0,1))## 确定y轴范围
plt.xticks([0,0.2,0.4,0.6,0.8,1])## 规定x轴刻度
plt.yticks([0,0.2,0.4,0.6,0.8,1])## 确定y轴刻度
plt.plot(rad,rad**2)## 添加y=x^2曲线
plt.plot(rad,rad**4)## 添加y=x^4曲线
plt.legend(['y=x^2','y=x^4'])
##第二幅子图
ax2 = p1.add_subplot(2,1,2)## 创开始绘制第2幅
plt.title('sin/cos') ## 添加标题
plt.xlabel('rad')## 添加x轴的名称
plt.ylabel('value')## 添加y轴的名称
plt.xlim((0,np.pi*2))## 确定x轴范围
plt.ylim((-1,1))## 确定y轴范围
plt.xticks([0,np.pi/2,np.pi,np.pi*1.5,np.pi*2])## 规定x轴刻度
plt.yticks([-1,-0.5,0,0.5,1])## 确定y轴刻度
plt.plot(rad,np.sin(rad))## 添加sin曲线
plt.plot(rad,np.cos(rad))## 添加cos曲线
plt.legend(['sin','cos'])
plt.savefig('sincos.png')
plt.show()

输出:

1.4 设置pyplot的动态rc参数

pyplot使用rc配置文件来自定义图形的各种默认属性,被称为rc配置或rc参数。在pyplot中,几乎所有的默认属性都是可以控制的,例如视图窗口大小以及每英寸点数、线条宽度、颜色和样式、坐标轴、坐标和网络属性、文本、字体等。

默认rc参数可以在python交互式环境中动态更改。所有存储在字典变量中的rc参数,都被称为rcParams。rc参数在修改后,绘图时使用默认的参数就会发生改变。

调节线条的rc参数

python 复制代码
x = np.linspace(0, 4*np.pi)## 生成x轴数据
y = np.sin(x)## 生成y轴数据
plt.plot(x,y,label="$sin(x)$")## 绘制sin曲线图
plt.title('sin')
plt.savefig('默认sin曲线.png')
plt.show()

输出:

修改rc参数后的图

python 复制代码
plt.rcParams['lines.linestyle'] = '-.'
plt.rcParams['lines.linewidth'] = 3
plt.plot(x,y,label="$sin(x)$")## 绘制三角函数
plt.title('sin')
plt.savefig('修改rc参数后sin曲线.png')
plt.show()

输出:

线条常用的rc参数名称、解释如下:

rc参数名称 解释 取值
lines.linewidth 线条宽度 0------10之间取值,默认为1.5
lines.linestyle 线条样式 取"-、--、-.、:"4种。默认为-
lines.marker 线条上点的形状 取"o、D、h"等20种。默认为None
lines.markersize 点的大小 0------10之间取值,默认为1

其中,lines.linestyle参数取值及意义

lines.linestyle取值 意义
- 实线
-. 点线
-- 长虚线
短虚线

lines.marker参数取值及意义

lines.marker取值 意义 lines.marker取值 意义
o 圆圈 .
D 菱形 s 正方形
h 六边形1 * 星号
H 六边形2 d 小菱形
- 水平线 v 一角朝下的三角形
8 八边形 < 一角朝左的三角形
p 五边形 > 一角朝右的三角形
, 像素 ^ 一角朝上的三角形
+ 加号 / 竖线
None x X

注意:由于pyplot字体并不支持中文字符的显示,因此需要通过设置font.sans-serif参数来改变绘图时的字体,使得图形可以正常显示中文。同时,由于更改字体后,会导致坐标轴的部分字体无法显示,因此需要同时更改axes.unicode_minus参数,如下所示。

python 复制代码
## 无法显示中文标题
plt.plot(x,y,label="$sin(x)$")## 绘制三角函数
plt.title('sin曲线')
plt.savefig('无法显示中文标题sin曲线.png')
plt.show()

输出:

python 复制代码
##设置rc参数显示中文标题
## 设置字体为SimHei显示中文
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False ## 设置正常显示符号
plt.plot(x,y,label="$sin(x)$")## 绘制三角函数
plt.title('sin曲线')
plt.savefig('显示中文标题sin曲线.png')
plt.show()

输出:

相关推荐
一车小面包11 小时前
Transformers中从 logits 本质到问答系统中的字符定位机制
pytorch·python·深度学习
派可数据BI可视化11 小时前
商业智能BI与业务结构分析
大数据·数据仓库·信息可视化·数据分析·商业智能bi
战族狼魂11 小时前
基于python+Java的二手车与奔驰销量数据可视化平台
java·数据库·python
Goboy11 小时前
【Python修仙笔记.3】Python函数作为秘技 - 封装你的仙法
后端·python
高洁0111 小时前
大模型-去噪扩散概率模型(DDPM)采样算法详解
python·深度学习·神经网络·transformer·知识图谱
Goboy11 小时前
【Python修仙笔记.4】数据结构法宝 - 存储你的仙器
后端·python
爱编程的鱼14 小时前
OpenCV Python 绑定:原理与实战
c语言·开发语言·c++·python
晓风残月淡16 小时前
JVM字节码与类的加载(二):类加载器
jvm·python·php
西柚小萌新18 小时前
【深入浅出PyTorch】--上采样+下采样
人工智能·pytorch·python