J3 Matplotlib使用

0 Matplot无法显示中文

font.family		: sans-serif
# 对应SimHei字体
font.sans-serif	 : SimHei
axes.unicode_minus	: False

1 什么是Matplotlib

  • Matplotlib是专门用于开发2D图表,以渐进、交互方式实现数据可视化

2 实现简单的Matplotlib绘图

2.1 引入模块

import matplotlib.pyplot as plt

2.2 绘图流程

  • 创建画布plt.figure()
'''
figize -- 指定图长和高
dpi -- 图像清晰度
返回fig对象
'''
plt.figure(figize=(), dpi=)
  • 绘制图像plt.plot(x,y),x代表x轴数据,y同理,均使用列表表示
  • 展示图像plt.show()

3 示例

  • 展示上周天气
# 导入模块
import matplotlib.pyplot as plt

# 创建画布
plt.figure(figsize=(5,3), dpi=100)

# 绘制图像
plt.plot([1,2,3,4,5,6,7], [10,12,13,12,15,13,10])

# 展示图像
plt.show()

8

4 示例Plus

  • 准备数据并画出初始折线图
import matplotlib.pyplot as plt
import random

# 准备数据
x = range(60)
y_cq = [random.uniform(15, 18) for i in x]

# 创建画布
plt.figure(figsize=(5, 3), dpi=100)

# 绘制折线图
plt.plot(x, y_cq)

# 展示图
plt.show()

9

  • 添加自定义x,y刻度
# x:要显示的刻度值
plt.xticks(x, **kwargs)
# y:要显示的刻度值
plt.yticks(y, **kwargs)
  • 添加网格显示
'''
开启网格显示,网格线样式为--,网格线透明度为0.5(1最大)
'''
plt.grid(True, linestyle='--', alpha=0.5)
  • 添加描述信息
# fontsize用于设置标题大小
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("11点至12点某地温度变化图", fontsize=20)
  • 图像保存,一定要在plt.show()之前保存图像,否则图像资源会被释放,保存图像为空
plt.savefig("temp.png")
  • 完整代码
import matplotlib.pyplot as plt
import random

#1 准备数据
x = range(60)
y_cq = [random.uniform(15, 18) for i in x]

#2 创建画布
plt.figure(figsize=(20, 8), dpi=100)

#3 绘制折线图
plt.plot(x, y_cq)

#3.1 添加x,y轴刻度
x_ticks_lable = ['11点{}分'.format(i) for i in x]
y_ticks = range(40)

#3.2 修改x,y轴坐标刻度显示,步长为5
# plt.xticks(x_ticks_lable[::5]) #坐标刻度不能直接通过字符串进行修改
plt.xticks(x[::5], x_ticks_lable[::5])
plt.yticks(y_ticks[::5])

#3.3 添加网格显示
plt.grid(True, linestyle='--', alpha=0.5)

#3.4 添加描述信息
plt.xlabel("时间", fontsize = 20)
plt.ylabel("温度", fontsize = 20)
plt.title("11点至12点某地温度变化图", fontsize=20)

#4 展示图
plt.show()

10

5 在一个坐标系中绘制多个图像

  • 再次plot即可
y_sc = [random.uniform(10, 15) for i in x]
'''
color颜色:
	r	 g	  b	   w    c	 m	  y    k
	红	绿	蓝	白	青	红	黄	黑
linestyle线条风格:
	-		  --	     -.	        :	     ''
	实线		虚线		点划线		点虚线		空格
lable线条标签
'''
plt.plot(x, y_sc, color='r', linestyle='--', label="四川")
  • 显示图例
'''
best            0
upper right	    1
upper left      2
lower left      3
lower right     4
right           5
center left     6
center right    7
lower center    8
upper center    9
center         10
'''
plt.legend(loc="best")
  • 完整代码
import matplotlib.pyplot as plt
import random

#1 准备重庆,四川温度数据
x = range(60)
y_cq = [random.uniform(15, 18) for i in x]
y_sc = [random.uniform(10, 15) for i in x]

#2 创建画布
plt.figure(figsize=(20, 8), dpi=100)

#3 绘制折线图
plt.plot(x, y_cq, label="重庆")
plt.plot(x, y_sc, color='r', linestyle='--', label="四川")

#3.1 添加x,y轴刻度
x_ticks_lable = ['11点{}分'.format(i) for i in x]
y_ticks = range(40)

#3.2 修改x,y轴坐标刻度显示,步长为5
plt.xticks(x[::5], x_ticks_lable[::5])
plt.yticks(y_ticks[::5])

#3.3 添加网格显示
plt.grid(True, linestyle='--', alpha=0.5)

#3.4 添加描述信息
plt.xlabel("时间", fontsize = 20)
plt.ylabel("温度", fontsize = 20)
plt.title("11点至12点某地温度变化图", fontsize=20)

#3.6 显示图例
plt.legend(loc="best")

#4 展示图
plt.show()

11

6 在多个坐标系中绘制多个图像

posted @ 2021-08-03 00:06  MHDSG  阅读(58)  评论(0)    收藏  举报