matplotlib学习笔记
1 | import numpy as np |
matplotlib三种代码风格
pyplot
1 | x=np.arange(0,10,1) |
pylab
1 | #pylab不推荐使用 |
Object Oriented
在matplotlib中,整个图像为一个Figure对象。在Figure对象中可以包含一个,或者多个Axes对象。每个Axes对象都是一个拥有自己坐标系统的绘图区域。其逻辑关系如下:
整个图像是fig对象。我们的绘图中只有一个坐标系区域,也就是ax。此外还有以下对象。
- Data: 数据区,包括数据点、描绘形状
- Axis: 坐标轴,包括 X 轴、 Y 轴及其标签、刻度尺及其标签
- Title: 标题,数据图的描述
- Legend: 图例,区分图中包含的多种曲线或不同分类的数据
- 其他的还有图形文本 (Text)、注解 (Annotate)等其他描述
Title为标题。Axis为坐标轴,Label为坐标轴标注。Tick为刻度线,Tick Label为刻度注释。各个对象之间有下面的对象隶属关系:
1 | # 推荐使用 |
子图
1 | x = np.arange(1,100) |
1 | x = np.arange(1,100) |
1 | #简化写法 |
多图
1 | fig1 = plt.figure() # plt派生一个图对象 |
散点图(scatter)
1 | fig,axes = plt.subplots(ncols=2,nrows=2) |
条形图 (bar)
1 | fig,axes = plt.subplots(ncols=2,nrows=2) |
1 | fig,axes = plt.subplots(ncols=2,nrows=2) |
直方图(hist)
1 | fig = plt.figure() |
饼状图(pie)
1 | labels='frogs','hogs','dogs','logs' |
箱型图(boxplot)
1 | fig = plt.figure() |
颜色与样式
颜色
样式
- 线条样式
- 标记样式
1 | fig = plt.figure() |
网格(grid)
1 | y = np.arange(1,5,0.1) |
图例(legend)
1 | x = np.arange(1,11,1) |
坐标轴范围调整
1 | #ax.axis([0,10,0,100]) [x左,x右,y下,y上] |
坐标轴刻度调整
1 | x = np.arange(0,11,0.1) |
图中添加新坐标轴
1 | x = np.arange(1,11,0.1) |
图中画注释符号
1 | x =np.arange(-10,11,1) |
图形中纯文字标注
1 | x =np.arange(-10,11,1) |
图像中画数学公式
1 | fig1 = plt.figure() |
填充上色
1 | x = np.linspace(0,5*np.pi,1000) |
画填充好的图形
1 | import matplotlib.patches as mpatches |
美化图形
1 | # 采用ggplot绘画风格 |
极坐标
1 | plt.style.use('ggplot') |
函数积分图
1 | def func(x): |
二维散点概率分布图
1 | plt.style.use('ggplot') |
完整的绘制程序综合
1 | import numpy as np |
绘制三维图形
首先补充一下numpy
中meshgrid
函数的用法。具体含义如下图所示
绘制3D曲面图
1 | from matplotlib import pyplot as plt |
绘制三维散点图
1 | import numpy as np |
参考
matplotlib核心剖析(http://www.cnblogs.com/vamei/archive/2013/01/30/2879700.html#commentform)
Numpy中Meshgrid函数介绍及2种应用场景(https://zhuanlan.zhihu.com/p/29663486)