一、任务一
1.1 开发环境
多种选择方案(大家根据自己的编程习惯,选择适合自己的工具),老师授课如下:Anaconda3+Jupter
1.2 特殊包
导入工具包设置中文显示:
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
sns.set_style('whitegrid', {'font.sans-serif':['simhei', 'Arial']})
6.1.3 验证性实验
1、利用set_style函数设置样式为"white",验证以下代码,并将结果附截图。
sns.set_style(style="white",rc={'font.sans-serif':['simhei', 'Arial']})
#设置风格,代替中文设置
hr = pd.read_csv(r'第4章/data/hr.csv', encoding='gbk')#hr.csv文件已经上传
hr.head(10)
# 加载数据
data = hr.head(100)#15000数据量取100个
# 使用Matplotlib库绘图
color_map = dict(zip(data['薪资'].unique(), ['b', 'y', 'r']))#薪资低中高映射于3种颜色
#按低中高分组绘制散点图
plt.figure(figsize=(15, 8))
for species, group in data.groupby('薪资'):
plt.scatter(group['每月平均工作小时数(小时)'],group['满意度'],color=color_map[species], alpha=0.4,edgecolors=None, label=species)
plt.legend(frameon=True, title='薪资')#label=species中低高图例标签
plt.xlabel('平均每个月工作时长(小时)')
plt.ylabel('满意度水平')
plt.title('满意度水平与平均每个月工作小时')
plt.show()
2、验证以下代码,体会'muted'调色板效果,并将结果附截图
plt.figure(figsize=(15, 8))
sns.scatterplot(x='每月平均工作小时数(小时)',y='满意度', data=data, hue='薪资',size='工龄(年)',palette='muted',style='薪资')
#设置hue和size,颜色palette='muted',点按style='薪资'显示
plt.xlabel('平均每个月工作时长(小时)')
plt.ylabel('满意度水平')
plt.title('满意度水平与平均每个月工作小时')
plt.show()
3、验证以下代码,体会color_palette函数设置调色板,体会bright调色板效果,并将结果附截图。
plt.figure(figsize=(15, 8))
pal_hex=sns.color_palette("bright",3).as_hex()#获得颜色16进制码
#markers = {'低' : 'o', '中' : 'D', '高' : 's'}
sns.scatterplot(x='每月平均工作小时数(小时)',y='满意度', data=data, hue='薪资',size='薪资',sizes=(200,50),palette=pal_hex)
plt.xlabel('平均每个月工作时长(小时)')
plt.ylabel('满意度水平')
plt.title('满意度水平与平均每个月工作小时')
plt.show()
4、验证以下代码,体会color_palette函数设置调色板,体会dark调色板效果,并将结果附截图。
plt.figure(figsize=(15, 8))
pal_hex=sns.color_palette("dark",3).as_hex()#获得颜色16进制码
#markers = {'低' : 'o', '中' : 'D', '高' : 's'}
sns.scatterplot(x='每月平均工作小时数(小时)',y='满意度', data=data, hue='薪资',size='薪资',sizes=(200,50),palette=pal_hex)
plt.xlabel('平均每个月工作时长(小时)')
plt.ylabel('满意度水平')
plt.title('满意度水平与平均每个月工作小时')
plt.show()
5、验证以下代码,体会元素缩放效果,并将结果附截图。
sns.set()
x = np.arange(1, 10, 2)
y1 = x + 1
y2 = x + 3
y3 = x + 5
def showLine(flip=1):
sns.lineplot(x=x, y=y1)
sns.lineplot(x=x, y=y2)
sns.lineplot(x=x, y=y3)
pic = plt.figure(figsize=(8, 8))
# 恢复默认参数
pic = plt.figure(figsize=(8, 8), dpi=100)
with sns.plotting_context('paper'): # 选择paper类型
pic.add_subplot(2, 2, 1)
showLine()
plt.title('paper')
with sns.plotting_context('notebook'): # 选择notebook类型
pic.add_subplot(2, 2, 2)
showLine()
plt.title('notebook')
with sns.plotting_context('talk'): # 选择talk类型
pic.add_subplot(2, 2, 3)
showLine()
plt.title('talk')
with sns.plotting_context('poster'): # 选择poster类型
pic.add_subplot(2, 2, 4)
showLine()
plt.title('poster')
plt.show()
6、分别验证以下代码,查看效果,并将结果附截图
sns.dark_palette((20, 60, 50), input="husl")
sns.palplot(sns.dark_palette('yellow'))
sns.palplot(sns.light_palette('blue'))
# 使用husl颜色空间作为种子
pal = sns.dark_palette((200,80, 60), input='husl', reverse=True, as_cmap=True)#(200,80,60)是RGB三基色码
sns.kdeplot(x=x, y=y, cmap=pal)
plt.title('自定义连续调色板')
plt.show()
2 任务二
2.1 matplotlib绘图参数设置
某企业2020年和2019年在全国各地区销售额数据如下:
表3-1 某企业两个年度销售额情况
年度 | 中南 | 东北 | 华东 | 华北 | 西南 | 西北 |
2019 | 214.71 | 445.66 | 627.11 | 800.73 | 956.88 | 1090.24 |
2020 | 223.65 | 488.28 | 673.34 | 870.95 | 1027.34 | 1193.34 |
1、利用matplotlib.pyplot绘制复式条状图,并用legend设置图例,title设置标题“某企业两个年度销售额情况”,xlable和ylable设置坐标名称。
2、利用matplotlib.pyplot在同一幅图片上绘制两条折线图,其他要求同1。
2.2 seaborn工具包绘图
1、按表3-1复现图3-1代码绘制条状图。
2、按表3-1复现图3-2代码绘制散点图。
3 任务三(实训)
3.1 实训1 分析各空气质量指数之间的关系及其分布情况
1、训练要点
(1)了解 scatterplot 函数的使用格式。
(2)掌握散点图的绘制方法。
(3)了解 stripplot 函数的使用格式。
(4)掌握分类散点图的绘制方法。
(5)了解 distplot 函数的使用格式。
(6)掌握单变量分布图的绘制方法。
(7)了解 regplot 函数的使用格式。
(8)掌握线性回归拟合图的绘制方法。
2、需求说明
空气质量指数(Air Quality Index,AQI)简而言之就是能够对空气质量进行定量描述的数据。空气质量(Air Quality)的好坏反映了空气污染程度,它是依据空气中污染物浓度的高低来判断的。空气污染是一个复杂的现象,在特定的时间看和地点,空气污染物浓度受到许多因素影响。
芜湖市 2020 年空气质量指数的部分数据如表3-2 所示。表3-2数据文件aqi.csv以上传。
表3-2 芜湖市 2020 年空气质量指数的部分数据
日期 | AQI | 质量等级 | PM2.5含量(ppm) | PM10含量(ppm) | SO2含量(ppm) | CO含量(ppm) | NO2含量(ppm) | O3_8h含量(ppm) |
2020/1/1 | 79 | 良 | 58 | 64 | 8 | 0.7 | 57 | 23 |
2020/1/2 | 112 | 轻度污染 | 84 | 73 | 10 | 1 | 71 | 7 |
2020/1/3 | 68 | 良 | 49 | 51 | 7 | 0.8 | 49 | 3 |
2020/1/4 | 90 | 良 | 67 | 57 | 7 | 1.2 | 53 | 18 |
2020/1/5 | 110 | 轻度污染 | 83 | 65 | 7 | 1 | 51 | 46 |
2020/1/6 | 65 | 良 | 47 | 58 | 6 | 1 | 43 | 6 |
2020/1/7 | 50 | 优 | 18 | 19 | 5 | 1.5 | 40 | 43 |
2020/1/8 | 69 | 良 | 50 | 49 | 7 | 0.9 | 39 | 45 |
2020/1/9 | 69 | 良 | 50 | 40 | 6 | 0.9 | 47 | 33 |
2020/1/10 | 57 | 良 | 34 | 28 | 5 | 0.8 | 45 | 21 |
将基于表3-2所示的数据绘制关系图、分类图、回归图,分析 PM2.5 与空气质量指数的关系,以及空气质量指数的分类和分布情况。
3、实现步骤
(1)使用 pandas 库读取芜湖市 2020年空气质量指数统计数据。
(2)解决中文字体的显示问题,设置字体为黑体,并解决保存图像时负号“_”显示为方块的问题。
(3)绘制 AQI 和 PM2.5 的关系散点图。
- 绘制空气质量等级分类散点图。
- 绘制空气质量等级单变量分布图。
- 绘制 PM2.5 与 AQI 的线性回归拟合图。
3.2 实训 2 分析各空气质量指数与 AQI 的相关性
1、训练要点
(1)了解 heatmap 函数的使用格式。
(2)掌握热力图的绘制方法。
2、需求说明
由表3-2所示的数据可知,空气质量指数包括了 PM2.5、PM10、SO2、CO、NO2、O3_8h。不同的指数对 AQI的影响不同。基于实训1的数据绘制热力图,分析各空气质量指数与 AQI 的相关性。
3、实现步骤
(1)使用 pandas 库读取芜湖市 2020 年空气质量指数统计数据。
- 解决中文字体的显示问题,设置字体为黑体,并解决保存图像时负号“-”显示为方块的问题。
- 计算相关系数。
(4)绘制特征相关性热力图。