Matplotlib快速入门
起源
-
早期:提供类似于MATLAB的画图效果/画图语法
-
后期:为很多python包提供很多的底层工具/画图逻辑
入门
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
matplotlib.rc("font", family='Microsoft YaHei')
data_list = [1, 2, 3, 4]
stock1 = [4, 8, 2, 6]
stock2 = [10, 12, 5, 3]
# 设置折线图格式
plt.plot(data_list, stock1, "ro--", label='股票价格:abc')
plt.plot(data_list, stock2, "b^--", label='股票价格:def')
# 设置标题
plt.title("折线图")
plt.xlabel("时间")
plt.ylabel("股价")
# 添加图例
plt.legend()
# 设置x/y轴坐标刻度
plt.xticks([1, 2, 3, 4])
plt.yticks(np.arange(2, 13, 1))
# 添加辅助网格线
plt.grid()
# 调整显示范围(类似于突出显示某一个部分)
plt.xlim(2.5, 4.5)
plt.ylim(1.5, 6.5)
plt.show()
单个图像的构成
eg:一个figure中画多个图:
- matlab语法
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
data_list = [1, 2, 3, 4]
stock1 = [4, 8, 2, 6]
stock2 = [10, 12, 5, 3]
# 创建一个figure画面figsize = (9,3)==> 横9英寸,竖 3英寸
plt.figure(figsize=(9, 3))
# 两行一列,画第一个图
plt.subplot(211)
plt.bar(data_list, stock1)
# 两行一列,画第二个图
plt.subplot(212)
plt.plot(data_list, stock2, "ro-")
plt.show()
-
面向对象OOP语法,准确写法
import matplotlib import matplotlib.pyplot as plt import numpy as np data_list = [1, 2, 3, 4] stock1 = [4, 8, 2, 6] stock2 = [10, 12, 5, 3] # 面向对象oop精确语法 # 每个axes都是一个对象 # figure控制x/y轴数值相等,背景为灰色 fig, axes = plt.subplots(2, 1, figsize=(6, 6), facecolor='grey', sharex=True, sharey=True) axes[0].bar(data_list, stock1) axes[1].plot(data_list, stock2, 'b^-') plt.show()
eg2:画多个图
import matplotlib.pyplot as plt
import matplotlib
import numpy as np
matplotlib.rc("font", family='Microsoft YaHei')
data_list = [1, 2, 3, 4]
# stock1 = [4, 8, 2, 6]
# stock2 = [10, 12, 5, 3]
stock1 = np.array([4, 8, 2, 6])
stock2 = np.array([10, 12, 5, 3])
# 面向对象oop精确语法
# 每个axes都是一个对象
fig, axes = plt.subplots(2, 2, figsize=(6, 6))
axes[0, 0].bar(data_list, stock1)
axes[0, 1].plot(data_list, stock2, 'b^-')
ax = axes[1, 0]
ax.scatter(data_list, stock2,
s=[10, 20, 50, 100],# 大小
c=['r', 'b', 'c', 'y']
)
axes[0, 0].set_title("股票1")
axes[0, 1].set_title("股票2")
ax.set_ylabel("差价(股票2-股票1)")
# 清除最后一个空白
axes[1, 1].remove()
# figure对象添加整体大标题/注释
fig.suptitle("股价分析图")
fig.supylabel("股价")
fig.supxlabel("季度")
plt.show()
3d图:
自学
参考视频:文章参考视频https://www.bilibili.com/video/BV1Pe4y1R79d/?spm_id_from=333.788