一、在一个坐标系中绘制多个图像
需求:再添加一个城市的温度变化(收集到北京当天的温度变化情况,温度在1到3度)。
做法:用不同的线条多次plot,并在右上角添加图例。
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"]=["SimHei"] #设置字体
plt.rcParams["axes.unicode_minus"]=False #该语句解决图像中的“-”负号的乱码问题
import random
### 画出温度变化图
## 1.准备x, y坐标的数据(后续可以通过文件读取等操作更换x, y值)
x = range(60)
y_shanghai = [random.uniform(15,18) for i in x] # 列表生成式,随机生成在a和b范围内的实数
# 在一个坐标系中绘制多个图像
y_beijing = [random.uniform(1, 3) for i in x]
## 2.创建画布
plt.figure(figsize=(20,8), dpi=100)
## 3.绘制折线图
plt.plot(x, y_shanghai, label = "上海")
plt.plot(x,y_beijing, color = 'r', linestyle = '--', label = "北京")
## 4.修改刻度
# 构造x轴、y轴刻度标签
x_ticks_label = ["11点{}分".format(i) for i in x]
y_ticks = range(40)
# 修改x, y轴坐标的刻度显示
plt.xticks(x[::5], x_ticks_label[::5])
plt.yticks(y_ticks[::5])
## 5.添加网格显示
plt.grid(True, linestyle = '--', alpha = 0.5)
## 6.添加描述信息
plt.xlabel("时间", fontsize = 15)
plt.ylabel("温度", fontsize = 15)
plt.title("中午11点0分到12点之间的温度变化图示", fontsize = 20)
## 7.显示图像
plt.legend(loc = "best")
plt.show()
二、在多个坐标系中显示多个图像
做法:使用subplots函数实现
· matplotlib.pyplot.subplots(nrows=1,ncols=1,**fig_kw)创建一个带有多个axes的图
· 对于一般的操作而言,将上一版本代码中的plt改换为axes[]中的对象即可实现。
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"]=["SimHei"] #设置字体
plt.rcParams["axes.unicode_minus"]=False #该语句解决图像中的“-”负号的乱码问题
import random
### 画出温度变化图
## 1.准备x, y坐标的数据(后续可以通过文件读取等操作更换x, y值)
x = range(60)
y_shanghai = [random.uniform(15,18) for i in x] # 列表生成式,随机生成在a和b范围内的实数
y_beijing = [random.uniform(1, 3) for i in x]
## 2.创建画布
fig, axes = plt.subplots(nrows = 1, ncols = 2, figsize = (20,8), dpi = 100)
## 3.绘制折线图
axes[0].plot(x, y_shanghai, label = "上海")
axes[1].plot(x,y_beijing, color = 'r', linestyle = '--', label = "北京")
## 4.添加x,y轴刻度
x_ticks_label = ["11点{}分".format(i) for i in x]
y_ticks = range(40)
axes[0].set_xticks(x[::5])
axes[0].set_yticks(y_ticks[::5])
axes[0].set_xticklabels(x_ticks_label[::5])
axes[1].set_xticks(x[::5])
axes[1].set_yticks(y_ticks[::5])
axes[1].set_xticklabels(x_ticks_label[::5])
## 5.添加网格显示
axes[0].grid(True, linestyle = '--', alpha = 0.5)
axes[1].grid(True, linestyle = '--', alpha = 0.5)
## 6.添加描述信息
axes[0].set_xlabel("时间", fontsize = 15)
axes[0].set_ylabel("温度", fontsize = 15)
axes[0].set_title("中午11点0分到12点之间的温度变化图示", fontsize = 20)
axes[1].set_xlabel("时间", fontsize = 15)
axes[1].set_ylabel("温度", fontsize = 15)
axes[1].set_title("中午11点0分到12点之间的温度变化图示", fontsize = 20)
## 7.显示图例
axes[0].legend(loc="best")
axes[1].legend(loc="best")
## 8.显示图像
plt.show()
三、折线图的应用场景
· 呈现公司产品每天活跃用户数
· 呈现APP下载次数
· 呈现产品新功能上线后,用户点击次数随时间的变化
· 拓展:画各种数学函数的图像
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"]=["SimHei"] #设置字体
plt.rcParams["axes.unicode_minus"]=False #该语句解决图像中的“-”负号的乱码问题
import numpy as np
# 1.准备数据
x = np.linspace(0, 10, 1000) # 从0到10之间生成1000个数
y = np.sin(x) # 具体的函数表示式
# 2.创建画布
plt.figure(figsize=(20, 8), dpi=100)
# 3.绘制函数图像
plt.plot(x, y)
# 3.1添加网格显示
plt.grid(True, linestyle = '--', alpha = 0.5)
# 4.绘制图像
plt.show()
四、其它图形绘制:柱状图、散点图、直方图、饼图等
· 柱状图:
plt.bar(
x, y:需要传递的数据;
width:柱状图的宽度;
align=:每个柱状图的位置对齐方式('center', 'edge'),optional, 默认为'center';
**kwargs;
color:柱状图的颜色;
)
· 直方图:
matplotlib.pyplot.hist(
x:需要传递的数据;
bins:组距;
)
· 饼图:
plt.pie(
x:数量,自动算百分比;
labels:每部分名称;
autopct=:占比显示指定'%1.2f%%'
colors:每部分颜色;
)
· 散点图:
plt.scatter(
x, y;
)