博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
matplotlib画图基础篇(一)
阅读量:4164 次
发布时间:2019-05-26

本文共 3395 字,大约阅读时间需要 11 分钟。

python数据处理

认识matplotlib

Matplotlib是Python数据可视化库中的泰斗,它已经成为python中公认的数据可视化工具,我们所熟知的pandas和seaborn的绘图接口其实也是基于matplotlib所作的高级封装。

为了对matplotlib有更好的理解,让我们从一些最基本的概念开始认识它,再逐渐过渡到一些高级技巧中。

#一个简单小例子import matplotlib.pyplot as pltfig, ax = plt.subplots()  # 创建一个包含一个axes的figureax.plot([1, 2, 3, 4], [1, 4, 2, 3])  # 绘制图像

在这里插入图片描述

和MATLAB命令类似,你还可以通过一种更简单的方式绘制图像,matplotlib.pyplot方法能够直接在当前axes上绘制图像,如果用户未指定axes,matplotlib会帮你自动创建一个。所以上面的例子也可以简化为以下这一行代码。

plt.plot([1, 2, 3, 4], [1, 4, 2, 3])

一、Figure的组成

现在我们来深入看一下figure的组成。通过一张figure解剖图,我们可以看到一个完整的matplotlib图像通常会包括以下四个层级,这些层级也被称为容器(container),下一节会详细介绍。在matplotlib的世界中,我们将通过各种命令方法来操纵图像中的每一个部分,从而达到数据可视化的最终效果,一副完整的图像实际上是各类子元素的集合。

Figure:顶层级,用来容纳所有绘图元素

Axes:matplotlib宇宙的核心,容纳了大量元素用来构造一幅幅子图,一个figure可以由一个或多个子图组成
Axis:axes的下属层级,用于处理所有和坐标轴,网格有关的元素
Tick:axis的下属层级,用来处理所有和刻度有关的元素

matplotlib的标准使用流程为:

创建一个Figure实例
使用Figure实例创建一个或者多个Axes或Subplot实例
使用Axes实例的辅助方法来创建primitive
值得一提的是,Axes是一种容器,它可能是matplotlib API中最重要的类,并且我们大多数时间都花在和它打交道上。

#流程实例import matplotlib.pyplot as pltimport numpy as np# step 1 # 我们用 matplotlib.pyplot.figure() 创建了一个Figure实例fig = plt.figure()# step 2# 然后用Figure实例创建了一个两行一列(即可以有两个subplot)的绘图区,并同时在第一个位置创建了一个subplotax = fig.add_subplot(2, 1, 1) # two rows, one column, first plot# step 3# 然后用Axes实例的方法画了一条曲线t = np.arange(0.0, 1.0, 0.01)s = np.sin(2*np.pi*t)line, = ax.plot(t, s, color='blue', lw=2)

在这里插入图片描述

二、2DLines

在matplotlib中曲线的绘制,主要是通过类 matplotlib.lines.Line2D 来完成的。

它的基类: matplotlib.artist.Artist
matplotlib中线-line的含义:它表示的可以是连接所有顶点的实线样式,也可以是每个顶点的标记。此外,这条线也会受到绘画风格的影响,比如,我们可以创建虚线种类的线。

#构造函数class matplotlib.lines.Line2D(xdata, ydata, linewidth=None, linestyle=None, color=None, marker=None, markersize=None,                               markeredgewidth=None, markeredgecolor=None, markerfacecolor=None,                               markerfacecoloralt='none', fillstyle=None, antialiased=None, dash_capstyle=None,                               solid_capstyle=None, dash_joinstyle=None, solid_joinstyle=None, pickradius=5,                               drawstyle=None, markevery=None, **kwargs)

其中常用的的参数有:

xdata:需要绘制的line中点的在x轴上的取值,若忽略,则默认为range(1,len(ydata)+1)

ydata:需要绘制的line中点的在y轴上的取值
linewidth:线条的宽度
linestyle:线型
color:线条的颜色
marker:点的标记
markersize:标记的size
其他详细参数可参考Line2D官方文档https://matplotlib.org/stable/api/_as_gen/matplotlib.lines.Line2D.html

绘制直线line 常用的方法有两种:

pyplot方法绘制
Line2D对象绘制

1.pyplot方法绘制

#pyplot方法绘制import matplotlib.pyplot as pltx = range(0,5)y = [2,5,7,8,10]plt.plot(x,y)

在这里插入图片描述

2.Line2D对象绘制

#Line2D对象绘制import matplotlib.pyplot as pltfrom matplotlib.lines import Line2D      fig = plt.figure()ax = fig.add_subplot(111)line = Line2D(x, y)ax.add_line(line)ax.set_xlim(min(x), max(x))ax.set_ylim(min(y), max(y))plt.show()

在这里插入图片描述

3.errorbar绘制误差折线图

pyplot里有个专门绘制误差线的功能,通过errorbar类实现,它的构造函数:

matplotlib.pyplot.errorbar(x, y, yerr=None, xerr=None, fmt='', ecolor=None, elinewidth=None, capsize=None,                           barsabove=False, lolims=False, uplims=False, xlolims=False, xuplims=False,                            errorevery=1, capthick=None, *, data=None, **kwargs)

其中最主要的参数是前几个:

x:需要绘制的line中点的在x轴上的取值

y:需要绘制的line中点的在y轴上的取值
yerr:指定y轴水平的误差
xerr:指定x轴水平的误差
fmt:指定折线图中某个点的颜色,形状,线条风格,例如‘co–’
ecolor:指定error bar的颜色
elinewidth:指定error bar的线条宽度

import numpy as npimport matplotlib.pyplot as pltfig = plt.figure()x = np.arange(10)y = 2.5 * np.sin(x / 20 * np.pi)yerr = np.linspace(0.05, 0.2, 10)plt.errorbar(x, y + 3, yerr=yerr, label='both limits (default)')

在这里插入图片描述

转载地址:http://dqoxi.baihongyu.com/

你可能感兴趣的文章
hbase shell出现ERROR: org.apache.hadoop.hbase.ipc.ServerNotRunningYetException
查看>>
让代码变得更优雅-Lombok
查看>>
解决Rhythmbox乱码
查看>>
豆瓣爱问共享资料插件发布啦
查看>>
Ubuntu10.10 CAJView安装 读取nh\kdh\caj文件 成功
查看>>
kermit的安装和配置
查看>>
vim 配置
查看>>
openocd zylin
查看>>
进程创建时文件系统处理
查看>>
内核线程创建
查看>>
linux中cat命令使用详解
查看>>
java中的异常机制
查看>>
java SE面向对象思维导图
查看>>
三维分析之视频投放
查看>>
SuperMap iDesktop之栅格值怎么查
查看>>
SuperMap iClient3D for WebGL教程-orientation
查看>>
SuperMap iClient3D for WebGL教程-description描述属性
查看>>
SuperMap iClient3D for WebGL教程-CallbackProperty
查看>>
如何修改leaflet聚合图的层级和样式
查看>>
三维分析之开敞度分析
查看>>