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

输出:

相关推荐
AI原吾3 小时前
掌握Python-uinput:打造你的输入设备控制大师
开发语言·python·apython-uinput
毕设木哥3 小时前
25届计算机专业毕设选题推荐-基于python的二手电子设备交易平台【源码+文档+讲解】
开发语言·python·计算机·django·毕业设计·课程设计·毕设
weixin_455446173 小时前
Python学习的主要知识框架
开发语言·python·学习
D11_4 小时前
Pandas缺失值处理
python·机器学习·数据分析·numpy·pandas
花生了什么树~.4 小时前
python基础知识(四)--if语句,for\while循环
python
IT毕设梦工厂5 小时前
计算机毕业设计选题推荐-在线拍卖系统-Java/Python项目实战
java·spring boot·python·django·毕业设计·源码·课程设计
luthane6 小时前
python 实现average mean平均数算法
开发语言·python·算法
码农研究僧6 小时前
Flask 实现用户登录功能的完整示例:前端与后端整合(附Demo)
python·flask·用户登录
Ylucius6 小时前
动态语言? 静态语言? ------区别何在?java,js,c,c++,python分给是静态or动态语言?
java·c语言·javascript·c++·python·学习
凡人的AI工具箱6 小时前
AI教你学Python 第11天 : 局部变量与全局变量
开发语言·人工智能·后端·python