Matplotlib
Matplotlib 是 Python 的一个绘图库,它提供了一套完整的绘图功能, 可以绘制出各种类型的图表,如折线图、柱状图、饼图、散点图、直方图等。很容易与NumPy\Pandas等库一起使用。
环境搭建
- 安装matplotlib
shell
pip install matplotlib # anaconda自带
- 测试matplotlib版本
python
import matplotlib.pyplog as plt
print(plt.__version__)
使用
绘制基础
函数 | 说明 |
---|---|
plt.plot() | 绘制折线图 |
plt.bar() | 绘制柱状图 柱状图主要用来纵向和横向对比 plt.bar(x,y,width=0.5,color='r') 每个坐标点多个柱状图 plt.bar(x,y) plt.bar([i+width for i in x],y) plt.bar([i+2*width for i in x],y) |
plt.pie() | 绘制饼图 explode=(0,0.1) 分裂程度 autopct='%1.1f%%' 饼图百分比 |
plt.hist() | 绘制直方图 bins=10 直方图柱子个数 alpha=0.5 透明度 kwargs={bins=100,alpha=0.5} plt.hist(x,**kwargs) |
plt.meshgrid() | 计算网格点 X,Y = np.meshgrid(x,y) 计算x,y的相交点 |
plt.contour() | 绘制等高线图 |
plt.contourf() | 绘制等高面图,颜色填充 |
plt.barh() | 绘制柱状图,与bar() 相反,横向比较 |
plt.subplot() | 绘制多图 将画布分成几行几列,然后绘制第几个图 plt.subplot(1,2,1) |
plt.axhline() | 绘制水平线 |
plt.axvline() | 绘制垂直线 |
plt.title() | 设置标题 |
plt.xlabel() | 设置x轴标签 |
plt.ylabel() | 设置y轴标签 |
plt.xticks() | 设置x轴刻度 |
plt.yticks() | 设置y轴刻度 |
plt.show() | 显示图 |
plt.legend() | 显示图例 |
plt.text() | 显示每条数据的x,y坐标 |
plt.figure() | 设置画布大小 |
plt.scatter() | 散点图 alpha:透明度 |
python
import matplotlib.pyplog as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.plot([1,1],[6,6])
plt.title('直线')
plt.show()
plt.plot([1,2,3,4],[1,4,9,16])
plt.title('折线图')
plt.show()
plt.savefig('result.jpg') # 保存图片
# 创建3d
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
x=[1,1,2,2]
y=[3,4,4,4]
z=[1,100,1,1]
fig=plt.figure()
ax=Axes3D(fig) # 创建一个axes3d的子图放到frguer画布
ax.plot_trisurf(x,y,z)plt.
plt.show()
plot格式
离散
参数 | 说明 |
---|---|
- | 实线 |
-- | 虚线 |
-. | 点划线 |
: | 点线 |
. | 点 |
, | 像素 |
o | 圆点 |
v | 倒三角形 |
^ | 直角三角形 |
1 | 下箭头 |
2 | 上箭头 |
3 | 左箭头 |
4 | 右箭头 |
s | 正方形 |
p | 五角星 |
* | 星号 |
h | 六边形 |
H | 六边形 |
+ | 加号 |
x | X标记 |
D | 菱形 |
d | 窄菱形 |
_ | 水平线 |
颜色
颜色 | 颜色代码 |
---|---|
b | 蓝色 |
g | 绿色 |
r | 红色 |
c | 青色 |
m | 品红 |
y | 黄色 |
k | 黑色 |
w | 白色 |
python
import matplotlib.pyplog as plt
import numpy as np
x = np.linspace(0, 10, 10) # 生成0-10的10个数
plt.plot(x,x+1, '--c', label='y=x+1') # --c 虚线青色 label图例
plt.title('直线')
plt.show()