gcc-project-py-25-2/商务大数据分析/20250430/任务5.1 掌握Matplotlib基础绘图.py
dev_xulongjin b4ef64314b feat(商务大数据分析): 五一前作业更新
- 新增 aqi.csv 文件,包含 2020 年 1 月 1 日至 9 月 27 日的空气质量数据- 数据包括日期、AQI、质量等级以及 PM2.5、PM10、SO2、CO、NO2、O3等污染物含量
2025-05-06 20:31:09 +08:00

200 lines
6.4 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 代码5-1
import numpy as np
import matplotlib.pyplot as plt
import warnings
# 忽略所有警告
warnings.filterwarnings("ignore")
# %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('../tmp/y=x^2.jpg')
plt.show()
# 代码5-2
x = np.arange(0, np.pi * 2, 0.01)
# 第一幅子图
p1 = plt.figure(figsize=(8, 6), dpi=80) # 确定画布大小
# 创建一个2行1列的子图并开始绘制第一幅
ax1 = p1.add_subplot(2, 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(x, x ** 2) # 添加y=x^2曲线
plt.plot(x, x ** 4) # 添加y=x^4曲线
plt.legend(['y=x^2', 'y=x^4'])
# 第二幅子图
ax2 = p1.add_subplot(2, 1, 2) # 开始绘制第二幅
plt.title('sin/cos(x)') # 添加标题
plt.xlabel('x') # 添加x轴的名称
plt.ylabel('y') # 添加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(x, np.sin(x)) # 添加sin(x)曲线
plt.plot(x, np.cos(x)) # 添加cos(x)曲线
plt.legend(['y=sin(x)', 'y=cos(x)'])
plt.tight_layout() # 调整两个子图间距
plt.savefig('../tmp/sincos(x).jpg')
plt.show()
# 代码5-3
# 原图
x = np.linspace(0, 4 * np.pi) # 生成x轴数据
y = np.sin(x) # 生成y轴数据
plt.plot(x, y, label='$sin(x)$') # 绘制sin曲线图
plt.title('sin(x)')
plt.xlabel('x')
plt.ylabel('y')
plt.show()
# 修改rc参数后的图
plt.rcParams['lines.linestyle'] = '-.'
plt.rcParams['lines.linewidth'] = 3
plt.plot(x, y, label='$sin(x)$') # 绘制三角函数
plt.title('sin(x)')
plt.xlabel('x')
plt.ylabel('y')
plt.show()
# 代码5-4
# 无法显示中文标题
plt.plot(x, y, label='$sin(x)$') # 绘制三角函数
plt.title('sin(x)曲线')
plt.xlabel('x')
plt.ylabel('y')
plt.show()
# 设置rc参数显示中文标题
# 设置字体为SimHei显示中文
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False # 设置正常显示符号
plt.plot(x, y, label='$sin(x)$') # 绘制三角函数
plt.title('sin(x)曲线')
plt.xlabel('x')
plt.ylabel('y')
plt.show()
# 代码5-5
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei' # 设置中文显示
plt.rcParams['axes.unicode_minus'] = False
data = np.load('../data/2001-2019年劳动力与就业人员数据.npz',
encoding='ASCII', allow_pickle=True)
columns = data['arr_0'] # 提取其中的columns数组视为数据的标签
values = data['arr_1'] # 提取其中的values数组视为数据的存在位置
plt.figure(figsize=(12, 6), dpi=1080) # 设置画布
plt.scatter(values[:, 0], values[:, 1], marker='o') # 绘制散点图
plt.xlabel('年份(年)')
plt.ylabel('劳动力人数(万人)')
plt.ylim(70000, 85000) # 设置y轴范围
plt.xticks(range(2001, 2020, 1), labels=values[:, 0])
plt.title('20012019年劳动力人数散点图') # 添加图表标题
plt.show()
# 代码5-6
p = plt.figure(figsize=(12, 6), dpi=1080) # 设置画布
# 绘制散点图1
plt.scatter(values[:, 0], values[:, 3], marker='o', c='b')
# 绘制散点图2
plt.scatter(values[:, 0], values[:, 4], marker='o', c='r')
plt.xlabel('年份(年)')
plt.ylabel('人数(万人)')
plt.ylim(20000, 60000) # 设置y轴范围
plt.xticks(range(2001, 2020, 1), labels=values[:, 0])
plt.legend(['城镇就业人员', '乡村就业人员']) # 设置图例
plt.title('20012019年城乡就业人数散点图') # 添加图表标题
plt.show()
# 代码5-7
p = plt.figure(figsize=(12, 6), dpi=1080) #设置画布
plt.plot(values[:, 0], values[:, 2], color='r', linestyle='-')
plt.xlabel('年份(年)')
plt.ylabel('人数(万人)')
plt.ylim(70000, 80000) # 设置y轴范围
plt.xticks(range(2001, 2020, 1), labels=values[:, 0])
plt.title('20012019年就业人数折线图')
plt.show()
# 代码5-8
p = plt.figure(figsize=(12, 6), dpi=1080) #设置画布
plt.plot(values[:, 0], values[:, 2], c='b', linestyle = '-',
marker = 'o') # 绘制点线图
plt.xlabel('年份(年)')
plt.ylabel('人数(万人)')
plt.ylim(70000, 80000) # 设置y轴范围
plt.xticks(range(2001, 2020, 1), labels=values[:, 0])
plt.title('20012019年就业人数点线图')
plt.show()
# 代码5-9
p = plt.figure(figsize=(12, 6), dpi=1080) #设置画布
plt.plot(values[:, 0], values[:, 3], 'bs-',
values[:, 0], values[:, 4], 'ro-.')
plt.xlabel('年份(年)')
plt.ylabel('人数(万人)')
plt.ylim(20000, 60000) # 设置y轴范围
plt.xticks(range(2001, 2020, 1), labels=values[:, 0])
plt.legend(['城镇就业人员', '乡村就业人员'])
plt.title('20012019年城乡就业人数点线图')
plt.show()
# 代码5-10
columns = data['arr_0'] # 提取其中的columns数组视为数据的标签
values = data['arr_1'] # 提取其中的values数组视为数据的存在位置
# 绘制柱形图
labels = ['城镇就业人员', '乡村就业人员']
p = plt.figure(figsize=(6, 6), dpi=1080)
plt.bar(range(2), values[-1, 3:5], width=0.5)
plt.xlabel('类别')
plt.ylabel('就业人数(万人)')
plt.xticks(range(2), labels)
plt.title('2019年城乡就业人数柱形图')
plt.show()
# 代码5-11
label = ['城镇就业人员', '乡村就业人员']
explode = [0.01, 0.01] # 设定各项距离圆心n个半径
p = plt.figure(figsize=(6, 6), dpi=1080) # 设置画布
plt.pie(values[-1, 3:5], explode=explode,
labels=label, autopct='%1.1f%%')
plt.title('2019年城乡就业人数分布饼图')
plt.show()
# 代码5-12
label= ['城镇就业人员', '乡村就业人员']
gdp = (list(values[:, 3]),list(values[:, 4]))
p = plt.figure(figsize=(6, 6), dpi=1080)
plt.boxplot(gdp, notch=True, labels=label, meanline=True)
plt.title('20012019年城乡就业人数分布箱线图')
plt.show()