不论是数据挖掘还是数学建模,都免不了数据可视化的问题。对于 Python 来说,matplotlib
是最著名的绘图库,它主要用于二维绘图,当然也可以进行简单的三维绘图。它不但提供了一整套和 Matlab 相似但更为丰富的命令,让我们可以非常快捷地用
python 可视化数据。
matplotlib基础
安装
pip install matplotlib
两种绘图风格 :
MATLAB风格:
基本函数是 plot,分别取 x,y 的值,然后取到坐标(x,y)后,对不同的连续点进行连线。
面向对象:
创建一个图形 fig 和一个坐标 ax 。
- fig:figure(plt.Figure) 是一个能容纳各种坐标轴,图形,文字和标签的容器。
- ax:axes(plt.Axes) 是一个带有刻度和标签的矩形,最终会包含各种可视化元素。
示例:
import matplotlib.pyplot as plt
import numpy as np
# 图形显示风格
plt.style.use('seaborn-whitegrid')
# 创建fig和ax
fig = plt.figure()
ax = plt.axes()
x = np.linspace(0,10,100)
# 显示sin函数图形
plt.plot(x, np.sin(x))
# 显示cos函数图形
plt.plot(x, np.cos(x))
plt.show()
这就是利用面向对象的方式绘图,在交互模式中可以看到,每画一个图就是产生一个对象,最后再显示出来。
绘图样式
# 调整坐标轴上下限
plt.xlim([xmin, xmax])
plt.ylim([ymin, ymax])
plt.axis([xmin, xmax, ymin, ymax])
# 参数:tight:把图形设置成紧凑模式,不留多余的部分
# equal:图形显示分辨率为1:1
线形图
文字设置
图形标题:plt.title
坐标轴标题:plt.xlabel, plt.ylabel
基础图例:plt.legend
注意:对中文不友好,需要额外方法,尽量使用英文
# 示例
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(1, 10, 100)
plt.plot(x, np.sin(x))
plt.title('sin-function')
plt.xlabel('x-value')
plt.ylabel('y-label')
plt.show()
图例
通过legend可以设置图例,同时通过参数的调整可以细腻的设置图例的位置、形式等。参数主要包括:
- loc:图例的位置
- frameon:是否带边框
- framealpha:颜色透明
- shadow:阴影
# 示例
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(1, 10, 100)
fig, ax = plt.subplots()
ax.plot(x, np.sin(x), color='red', label='sin-function')
ax.plot(x, np.cos(x), color='blue', label='cos-function')
ax