1 2 3 4 5 |
# 导入matplotlib import matplotlib.pyplot as plt import random import numpy as np |
1 2 3 4 5 6 7 8 9 |
# 创建画布, figsize画布大小, dpi像素密度默认100 plt.figure(figsize=(20, 8), dpi=100) # 绘制图像 plt.plot([1, 2, 3], [4, 5 ,6]) # 保存图像,字符串指定目录; 必须放在show()函数之前 plt.savefig('./test.png') # 显示图像, 之后内存中图像自动清空 plt.show() |
完善原始折线图
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# 需求:画出某城市11点到12点1小时内每分钟的温度变化折线图,温度范围在15度~18度 # 生成数据 x = range(60) y = [random.uniform(15, 18) for i in x] # 创建画布 plt.figure(figsize=(20,8)) # 绘制图像 plt.plot(x, y) # 添加描述信息 plt.xlabel('time', fontsize=20) plt.ylabel('tem', fontsize=20) plt.title('temperature of city', fontsize=25) # 添加坐标轴刻度 x_tick_label = ['11点{}'.format(i) for i in x] plt.xticks(x[::5], x_tick_label[::5]) # 设置刻度, 相互对应???, [::5]步长 y_range = range(40) plt.yticks(y_range[::5]) # 添加网格线, linestyle线型, alpha透明度, 其他看文档??? plt.grid(linestyle='--', alpha=0.8) # 显示图像 plt.show() |
多条折线图
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# 需求:画出某城市11点到12点1小时内每分钟的温度变化折线图,温度范围在15度~18度 # 再添加一个城市 # 生成数据 x = range(60) y_shanghai = [random.uniform(15, 18) for i in x] y_beijing = [random.uniform(1, 3) for i in x] # 创建画布 plt.figure(figsize=(20,8)) # 绘制图像, 创建时命名图例 plt.plot(x, y_shanghai, label='shanghai') # 绘制第二根折线, 绘制多条曲线, 多次调用绘制函数plot() plt.plot(x, y_beijing, label='beijing') # 添加描述信息 plt.xlabel('time', fontsize=20) plt.ylabel('tem', fontsize=20) plt.title('temperature of city', fontsize=25) # 添加坐标轴刻度 x_tick_label = ['11点{}'.format(i) for i in x] plt.xticks(x[::5], x_tick_label[::5]) # 设置刻度, 相互对应?, [::5]步长 y_range = range(40) plt.yticks(y_range[::5]) # 添加网格线, linestyle线型, alpha透明度, 其他看文档 plt.grid(linestyle='--', alpha=0.8) # 添加图例, 首先要在绘制图像时设置label, loc控制图例显示位置, 具体看文档 plt.legend(loc='best') # 显示图像 plt.show() |
在多个画布绘图
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# 需求:画出某城市11点到12点1小时内每分钟的温度变化折线图,温度范围在15度~18度 # 再添加一个城市 # 生成数据 x = range(60) y_shanghai = [random.uniform(15, 18) for i in x] y_beijing = [random.uniform(1, 3) for i in x] # 创建画布 # plt.figure(figsize=(20,8)) # 设置绘图区域,nrows行数 nclos列数, 返回: 画布对象, 绘图区域对象一行二列数组 fig, ax = plt.subplots(nrows=1, ncols=2, figsize=(20, 8)) # 绘制图像, 创建时命名图例 # plt.plot(x, y_shanghai, label='shanghai') # 指定第一个绘图区域绘制 ax[0].plot(x, y_shanghai, label='shanghai') # 绘制第二根折线, 绘制多条曲线, 多次调用绘制函数plot() # plt.plot(x, y_beijing, label='beijing') ax[1].plot(x, y_beijing, label='beijing') # 添加描述信息 # plt.xlabel('time', fontsize=20) # plt.ylabel('tem', fontsize=20) # plt.title('temperature of city', fontsize=25) ax[0].set_xlabel('time', fontsize=20) ax[0].set_ylabel('tem', fontsize=20) ax[0].set_title('temperature of city', fontsize=25) ax[1].set_xlabel('time', fontsize=20) ax[1].set_ylabel('tem', fontsize=20) ax[1].set_title('temperature of city', fontsize=25) # 添加坐标轴刻度 x_tick_label = ['11点{}'.format(i) for i in x] y_range = range(40) # plt.xticks(x[::5], x_tick_label[::5]) # 设置刻度, 相互对应, [::5]步长 # plt.yticks(y_range[::5]) ax[0].set_xticks(x[::5]) ax[0].set_xticks(x[::5], x_tick_label[::5]) ax[0].set_yticks(y_range[::5]) ax[1].set_xticks(x[::5]) ax[1].set_xticks(x[::5], x_tick_label[::5]) ax[1].set_yticks(y_range[::5]) # 添加网格线, linestyle线型, alpha透明度, 其他看文档 # plt.grid(linestyle='--', alpha=0.8) ax[0].grid(linestyle='--', alpha=0.8) ax[1].grid(linestyle='--', alpha=0.8) # 添加图例, 首先要在绘制图像时设置label, loc控制图例显示位置, 具体看文档 # plt.legend(loc='best') ax[0].legend(loc='best') ax[1].legend(loc='best') # 显示图像 plt.show() |
绘制函数图像
1 2 3 4 |
# 创建数据 x = np.linspace(-10 , 10, 100) # 取足够多的点,才能看到光滑的曲线 y = np.sin(x) |
1 2 3 4 5 6 7 8 9 |
# 创建画布 plt.figure(figsize=(20,8)) # 绘制图形 plt.plot(x, y) # 显示图像 plt.show() |
散点图的绘制
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
x = [225.98, 247.07, 253.14, 457.85, 241.58, 301.01, 20.67, 288.64, 163.56, 120.06, 207.83, 342.75, 147.9 , 53.06, 224.72, 29.51, 21.61, 483.21, 245.25, 399.25, 343.35] y = [196.63, 203.88, 210.75, 372.74, 202.41, 247.61, 24.9 , 239.34, 140.32, 104.15, 176.84, 288.23, 128.79, 49.64, 191.74, 33.1 , 30.74, 400.02, 205.35, 330.64, 283.45] # 创建画布 plt.figure(figsize=(20, 8)) # 绘制图像 散点图 plt.scatter(x, y) # 显示图像 plt.show() |
柱状图的绘制
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
movie_names = ['雷神3:诸神黄昏','正义联盟','东方快车谋杀案','寻梦环游记','全球风暴', '降魔传','追捕','七十七天','密战','狂兽','其它'] x = range(len(movie_names)) y = [73853,57767,22354,15969,14839,8725,8716,8318,7916,6764,52222] # 创建画布 plt.figure(figsize=(20, 8)) # 设置x轴刻度, x与 movie_names一一对应 plt.xticks(x, movie_names) # 绘制图像, width宽度 color颜色 plt.bar(x, y, width=0.5, color=['b','r','g','y','c','m','y','k','c','g','b']) # 显示图像 plt.show() |