目标:会使用matblotlib库绘制直方图、柱状图、散点图、气泡图、折线图、三维图等
一、子图
1.创建画布
# 1.导入库
from matplotlib import pyplot as plt
# 2.创建画布figure对象
plt.figure(figsize=(3, 2), facecolor="green")
# figsize 对象的宽和高(英寸)
# facecolor 背景颜色
# edgecolor 边框颜色
# 3.绘制
plt.plot() # 绘制一个空白图形
# 4.显示图形
plt.show()
常用颜色:(也可使用颜色首字母)
颜色 | |
---|---|
blue | black |
green | white |
red | yellow |
2.划分子图
plt.subplot(行数, 列数, 子图序号)
# 比如:
plt.subplot(1,2,1)
# 也可以省略逗号
plt.subplot(121)
例子:
from matplotlib import pyplot as plt
plt.figure()
plt.subplot(1, 2, 1)
plt.subplot(1, 2, 2)
plt.show()
3.添加标题
# 设置子标题
plt.title('子标题')
# 设置全局标题
plt.suptitle('全局标题')
例子:
from matplotlib import pyplot as plt
plt.figure()
plt.subplot(1, 2, 1)
plt.title("figure1")
plt.subplot(1, 2, 2)
plt.title("figure2")
plt.suptitle("two figures")
plt.tight_layout() # 自动调整子图,消除子图重叠
plt.show()
二、散点图
plt.scatter(x=横坐标, y=纵坐标, scale=数据点大小,
color=颜色, marker=数据点样式圆点等, label=图例文字)
例子:
from matplotlib import pyplot as plt # 导入绘图库
import numpy as np # 导入numpy库
n = 1024
x1 = np.random.normal(0, 1, n) # 正态分布,生成数据x1坐标
y1 = np.random.normal(0, 1, n) # 正态分布,生成数据y1坐标
x2 = np.random.uniform(-4, 4, (1, n)) # 均匀分布,x2
y2 = np.random.uniform(-4, 4, (1, n)) # 均匀分布,x2
plt.scatter(x1, y1, color='blue', marker='*', label='Normal') # 绘制散点
plt.scatter(x2, y2, color='red', marker='o', label='uniform') # 绘制散点
plt.legend() # 显示图例
plt.title("Normal", fontsize=20) # 绘制标题
plt.text(2.5, 2.5, "u:0\na:1") # 添加文字
plt.xlim(-4, 4) # x轴范围
plt.ylim(-4, 4) # y轴范围
plt.xlabel('x', fontsize=14) # x轴文本
plt.ylabel('y', fontsize=14) # y轴文本
plt.show() # 显示绘图
三、折线图
plt.plot(x, y, color, marker, label, linewidth) # x默认为0,1,2...
例子:
from matplotlib import pyplot as plt
import numpy as np
n = 24
y1 = np.random.randint(27, 37, n)
y2 = np.random.randint(40, 60, n)
plt.plot(y1, label='tem')
plt.plot(y2, label='water')
plt.xlim(0, 23)
plt.ylim(20, 70)
plt.xlabel('hour')
plt.ylabel('shuzhi')
plt.legend()
plt.show()
四、柱形图
plt.bar(left, height, width, label) # x轴的位置序列, y轴的数值序列,柱子的宽度(0.8),图例文字
例子:
from matplotlib import pyplot as plt
y1 = [3, 4, 3, 6, 7, 8, 4]
y2 = [-3, -4, -3, -6, -7, -8, -4]
plt.bar(range(len(y1)), y1, label='y1')
plt.bar(range(len(y2)), y2, label='y2')
plt.legend()
plt.show()