1.2 风格和样式
1.2.1 颜色、线形、点形、线宽、透明度
接下来我们结合代码去进行讲解:
import numpy as np import matplotlib.pyplot as plt x = np.linspace(0, 2 * np.pi, 20) y1 = np.sin(x) y2 = np.cos(x) # 设置颜色,线型,点型 # 绘制x,y1的图形,颜色是 indigo,线形为'-.',图像上点的类型是五边形'p plt.plot(x, y1, color = 'indigo', ls = '-.', marker = 'p') # 绘制x,y2的图形,颜色是 #FF00EE,线形为'-',图像上点的类型是圆圈'o' plt.plot(x, y2, color = '#FF00EE', ls = '--', marker = 'o') # 绘制x,y1+y2的图形,颜色是(0.2, 0.7, 0.2),线形为':',图像上点的类型是五角星'*' plt.plot(x, y1 + y2, color = (0.2, 0.7, 0.2), marker = '*',ls = ':') # 绘制x,y1+2*y2的图形,线宽为3,透明度为0.7,颜色为 orange plt.plot(x, y1 + 2 * y2, linewidth = 3, alpha = 0.7, color = 'orange') # 线宽、透明度 # 参数连用 # 绘制x,2*y1-y2的图形,b代表color:blue;o代表marker:'o';--代表ls:'--' plt.plot(x, 2 * y1 - y2, 'bo--')
1.2.2 更多属性设置
import numpy as np import pandas as pd def f(x): return np.exp(-x) * np.cos(2 * np.pi * x) x = np.linspace(0, 5, 50) plt.figure(figsize = (9, 6)) plt.plot(x, f(x), color = 'purple', # 线颜色 marker = 'o', # 图像中的点的形状 ls = '--', # 线形 lw = 2, # 线宽 alpha = 0.6, # 透明度 markerfacecolor = 'red', # 点颜色 markersize = 10, # 图像中点的大小 markeredgecolor = 'green', # 点边缘颜色 markeredgewidth = 3) # 点边缘宽度 plt.xticks(size = 18) # 设置刻度大小 plt.yticks(size = 18)
1.3 训练场
1.3.1 绘制如下图形
要求:
- 设置背景颜色为:灰色
- 设置视图颜色为:灰色
- 设置网格线颜色:白色
- 设置网格线样式:虚线
- 函数关系如下:y = np.sin(x + i * 0.5) * (7 - i)
- 方程中的i可以给定范围1~6,表示图片中的6条线
import numpy as np import matplotlib.pyplot as plt plt.figure(figsize = (9, 6), facecolor = 'gray') def fun(x): for i in range(1, 7): y = np.sin(x - 0.5 * i) * (7 - i) plt.plot(x, y) # 画图范围从 0~14,分成200份 x= np.linspace(0, 14, 200) fun(x) # 获取当前视图 ax = plt.gca() ax.set_facecolor('gray') # 添加网格线 plt.grid(color = 'white', linestyle = '--')
1.3.2 根据提供数据,进行分组聚合运算,绘制如下图形
要求:
- 分组聚合求各个城市春夏秋冬的PM2.5的平均值
- 对分组聚合结果进行数据重塑
- 调整行索引顺序按照:北京、上海、广州、沈阳、成都
- 调整列索引顺序:春夏秋冬
- 使用DataFrame方法绘制条形图
首先我们需要下载一个 Excel 文件:
链接: https://pan.baidu.com/s/1ns8p3xD_EVS2GNNKApDtLg?pwd=eu4u
提取码: eu4u
下载完成之后,把该文件和我们的代码放到同一个文件夹下,这一操作我们在之前的博客中已经反复说到,这里就不再进行演示
注:代码处于运行中将显示:
下列代码运行几十秒甚至几分钟都是正常的,耐心等待运行结果即可。
我们先来加载我们的数据
%%time import pandas as pd import matplotlib.pyplot as plt df = pd.read_excel('./PM2.5.xlsx') display(df.head(10)) df.shape
# 根据 城市,季节进行分组,获取PM2.5的数据并求平均 df.groupby(by = ['城市', '季节'])['PM2.5'].mean()
数据看起来不太舒服,把它变成 DataFrame格式,并保留两位小数
df2 = df.groupby(by = ['城市', '季节'])[['PM2.5']].mean().round(2) df2
数据还是看起来不美观,数据重塑:
df2 = df2.unstack(level = -1) df2
删除掉 PM2.5:
df2.columns = df2.columns.droplevel(level = 0) df2
调整列索引的顺序:
df2 = df2[list('春夏秋冬')] df2 = df2.loc[['北京', '上海', '广州', '成都', '沈阳']] df2
绘图:
plt.rcParams['font.family'] = 'KaiTi' plt.rcParams['font.size'] = 18 df2.plot.bar(figsize = (12, 9)) plt.grid(color = 'gray', ls = '--')