【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()

输出:

相关推荐
SelectDB14 小时前
Apache Doris Python UDF:让 SQL 直接调用 Python 生态,支撑 Agent 时代复杂业务逻辑
大数据·数据库·python
荣码1 天前
GraphRAG:普通RAG只能回答"点"的问题,我踩了4个坑才搞懂
java·python
金銀銅鐵1 天前
[Python] 基于欧几里得算法,实现分数约分计算器
python·数学
Lyn_Li1 天前
Kaggle Top 5 | 198只股票、200条数据的金融预测——BattleFin高分方案从零复现
python·kaggle·比赛复盘·金融预测
小九九的爸爸2 天前
前端想要入门Agent开发,要具备哪些Python基础?
python·agent·ai编程
阿耶同学2 天前
手把手教你用 LangGraph 搭建三层嵌套 Agent 架构
python·程序员
花酒锄作田2 天前
Pydantic校验配置文件
python
hboot2 天前
AI工程师第四课 - 深度学习入门
pytorch·python·神经网络
ZhengEnCi3 天前
P2M-Matplotlib折线图完全指南-从数据可视化到趋势分析的Python绘图利器
python·matlab·数据可视化
ZhengEnCi3 天前
P2L-Matplotlib饼图完全指南-从数据可视化到图表定制的Python绘图利器
python·matlab