03-Matplotlib 数据可视化基础

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38038143/article/details/88380922

前言

matplotlib.pyplot是一个命令风格函数的集合,使Matplotlib 的机制更像MATLAB。
示例中,展示了函数的部分参数,更多参考官网:

https://matplotlib.org/index.html

1. 绘图基础语法及参数

在这里插入图片描述

  1. 语法基础:
import numpy as np
import matplotlib.pyplot as plt

# 绘图语法
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(np.arange(0,1,0.2)) # 规定 x 轴刻度
plt.yticks(np.arange(0,1,0.2)) # 规定 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('./figure1.png') # 保存
plt.show() # 结果展示

在这里插入图片描述
2. 包含子图

# 绘图语法
data = np.arange(0, 1.1, 0.01)

p1 = plt.figure(figsize=(8,10), dpi=80) # 确定画布大小
# 开始绘制第一图
ax1 = p1.add_subplot(2,1,1) # 创建一个2行1列的子图
plt.title('lines1') # 添加标题
plt.xlabel('x') # 添加 x 轴名称
plt.ylabel('y') # 添加 y 轴名称
plt.xlim((0,1)) # 确定 x 轴范围
plt.ylim((0,1)) # 确定 y 轴范围
plt.xticks(np.arange(0,1,0.2)) # 规定 x 轴刻度
plt.yticks(np.arange(0,1,0.2)) # 规定 y 轴刻度
plt.plot(data, data**2) # 添加 y = x^2 
plt.legend(['y=x^2']) # 添加图例
# 开始绘制第二图
ax1 = p1.add_subplot(2,1,2) # 创建一个2行1列的子图
plt.title('lines2') # 添加标题
plt.xlabel('x') # 添加 x 轴名称
plt.ylabel('y') # 添加 y 轴名称
plt.xlim((0,1)) # 确定 x 轴范围
plt.ylim((0,1)) # 确定 y 轴范围
plt.xticks(np.arange(0,1,0.2)) # 规定 x 轴刻度
plt.yticks(np.arange(0,1,0.2)) # 规定 y 轴刻度
plt.plot(data, data**4) # 添加 y = x^4
plt.legend([ 'y=x^4']) # 添加图例

plt.savefig('./figure2.png') # 保存
plt.show() # 结果展示

在这里插入图片描述
3. 设置动态 rc 参数

p1 = plt.figure(figsize=(8,6)) # 画布
# 原图
ax1 = p1.add_subplot(2,1,1)
x = np.linspace(0, 4*np.pi) # x数组
y = np.sin(x) # y数据
plt.plot(x,y,label="$sin(x)$") # 绘制sin曲线图
plt.title('sin')

# 改变 rc 参数
ax2 = p1.add_subplot(2,1,2)
plt.rcParams['lines.linestyle'] = '-.'
plt.rcParams['lines.linewidth'] = 3
plt.plot(x,y,label="$sin(x)$") # 绘制sin曲线图
plt.title('sin')

plt.show()

在这里插入图片描述
更多参数查询官方文档。

2. 五种常用图形

  1. 散点图
import numpy as np
import matplotlib.pyplot as plt

# 数据导入
data =  np.load('./国民经济核算季度数据.npz')
names = data['columns'] # 名称
values = data['values'] # 值

# 散点图
# 设置中文显示
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
plt.figure(figsize=(8,7)) # 设置画布
plt.scatter(values[:,0], values[:,2], marker='o') # 绘制
plt.xlabel('年份')
plt.ylabel('生产总值(亿元)')
plt.ylim((0,225000)) # y轴范围
# x轴刻度、显示内容、rotation{角度,'垂直','水平'}
plt.xticks(range(0,70,4), values[range(0,70,4),1], rotation=45)
plt.title('2000~2017年各季度国民生产总值散点图') # 标题
plt.show()

在这里插入图片描述
plt.xticks 没有添加 rotation参数的结果:
在这里插入图片描述
2. 折线图

plt.figure(figsize=(8,7)) # 设置画布
plt.plot(values[:,0], values[:,2], color='r', linestyle='--') # 绘制
plt.xlabel('年份')
plt.ylabel('生产总值(亿元)')
plt.ylim((0,225000)) # y轴范围
# x轴刻度、显示内容、rotation{角度,'垂直','水平'}
plt.xticks(range(0,70,4), values[range(0,70,4),1], rotation=45)
plt.title('2000~2017年各季度国民生产总值散点图') # 标题
plt.show()

在这里插入图片描述
3. 柱状图

plt.figure(figsize=(6,5)) # 设置画布
plt.bar(range(3), values[-1,3:6], width=0.5) # 绘制
plt.xlabel('产业')
plt.ylabel('生产总值(亿元)')
# x轴刻度
plt.xticks(range(3),['第一产业', '第二产业', '第三产业'])
plt.title('2017年第一季度各产业国民生产总值直方图') # 标题
plt.show()

在这里插入图片描述
4. 饼图

plt.figure(figsize=(6,6)) # 设置画布
label = ['第一产业', '第二产业', '第三产业'] # 标签
explode = [0.01, 0.01, 0.01] # 各项距离圆心 n 个半径
plt.pie(values[-1, 3:6], explode=explode, labels=label, autopct='%1.1f%%') # 绘制
plt.title('2017年第一季度各产业国民生产总值饼图') # 标题
plt.show()

在这里插入图片描述
5. 箱线图

plt.figure(figsize=(6,6)) # 设置画布
label = ['第一产业', '第二产业', '第三产业'] # 标签
gdp = (list(values[:,3]), list(values[:,4]), list(values[:,5]))
plt.boxplot(gdp, notch=True, labels=label) # 绘制
plt.title('2000~2017年各产业国名生产总值箱线图') # 标题
plt.show()

在这里插入图片描述

完!

猜你喜欢

转载自blog.csdn.net/qq_38038143/article/details/88380922