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

输出:

相关推荐
XU磊26011 分钟前
使用 PyTorch 构建 UNet 图像去噪模型:从数据加载到模型训练的完整流程
人工智能·pytorch·python
renne11 分钟前
Open WebUI+MCP搭建个人AI智能体
python·openai
JavaEdge在掘金13 分钟前
LangChain4j + MCP:让你的 AI 轻松调用外部工具(内附GitHub-MCP实战)
python
SsummerC14 分钟前
【leetcode100】一和零
开发语言·python·leetcode·动态规划
Kusunoki_D29 分钟前
在 Anaconda 上安装多版本 Python 解释器并在 PyCharm 中配置
ide·python·pycharm
刘大猫2637 分钟前
Arthas stack (输出当前方法被调用的调用路径)
java·人工智能·数据分析
lilye6641 分钟前
精益数据分析(1/126):从《精益数据分析》探寻数据驱动增长之道
数据挖掘·数据分析
傻啦嘿哟1 小时前
Python与图像处理:从基础操作到智能应用的全面解析
开发语言·图像处理·python
机器学习Zero2 小时前
自然语言处理(9)—— 共现词矩阵及Python实现
人工智能·python·自然语言处理·nlp
Json_2 小时前
睡前小故事数据集分享
人工智能·数据分析·openai