小白学Python——Matplotlib 学习(1)
众所周知,通过数据绘图,我们可以将枯燥的数字转换成容易被人们接受的图表,从而让人留下更加深刻的印象。而大多数编程语言都有自己的绘图工具,matplotlib就是基于Python的绘图工具包,使用它我们可以仅仅使用几行代码就生成 饼图、直方图、功率谱、条形图、错误图、散点图、气泡图,甚至生成动态图型也都很轻松。而且它的绘图方法丰富,可以在各种交互式环境中运行,且生成的图像质量高、兼容各种硬拷贝格式。
matplotlib的官网地址是https://matplotlib.org/index.html,下面这些是他们官网的一些示例图形。
pip安装
Matplotlib的安装比较容易,可以直接通过pip安装,也可以通过下载安装包的方式安装。博主使用的是python3,相关的安装命令如下:
pip install matplotlib
Matplotlib是整个包,matplotlib.pyplot
是Matplotlib中的一个模块。对于pyplot模块中的功能,始终存在“当前”图形和轴(根据请求自动创建)。例如,在下面的例子中,在第一次调用plt.plot
创建轴,则后续调用plt.plot
在同一坐标添加额外的线,以及 plt.xlabel
,plt.ylabel
,plt.title
和plt.legend
设置轴标签和标题和添加的图例。pylab
是一个便利模块,可以 在单个命名空间中批量导入 matplotlib.pyplot
(用于绘图)和numpy
(用于数学和使用数组)。不推荐使用pylab,并且由于命名空间污染而强烈建议不要使用它。请改用pyplot。对于非交互式绘图,建议使用pyplot创建图形,然后使用OO界面进行绘图。pyplot是matplotlib的一个模块,pylab是与matplotlib共同安装的模块。
matplotlib的用户指南分为三个等级:入门,中级,高级。在入门级,主要介绍下图内容
这里我首先介绍 使用指南 部分,即 Usage Guide。
1.一张图的组成
在使用matplotlib画图时,你会发现各种参数,下面就说说这些参数具体设置什么
简单绘图
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | import matplotlib.pyplot as plt import numpy as np x = np.linspace( 0 , 2 , 100 ) plt.plot(x, x, label = 'linear' ) plt.plot(x, x * * 2 , label = 'quadratic' ) plt.plot(x, x * * 3 , label = 'cubic' ) plt.xlabel( 'x label' ) plt.ylabel( 'y label' ) plt.title( "Simple Plot" ) plt.legend() plt.show() |
sinx 函数
1 2 3 4 5 6 7 | import matplotlib.pyplot as plt import numpy as np x = np.arange( 0 , 10 , 0.2 ) y = np.sin(x) fig, ax = plt.subplots() ax.plot(x, y)<br>plt.title( "Sin(x)" ) plt.show() |
自定义画图函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | import matplotlib.pyplot as plt import numpy as np def my_plotter(ax, data1, data2, param_dict): """ A helper function to make a graph Parameters ---------- ax : Axes The axes to draw to data1 : array The x data data2 : array The y data param_dict : dict Dictionary of kwargs to pass to ax.plot Returns ------- out : list list of artists added """ out = ax.plot(data1, data2, * * param_dict) return out # which you would then use as: data1, data2, data3, data4 = np.random.randn( 4 , 100 ) fig, ax = plt.subplots( 1 , 1 ) my_plotter(ax, data1, data2, { 'marker' : 'x' }) plt.show() |
生成2个子图
1 2 3 | fig, (ax1, ax2) = plt.subplots( 1 , 2 ) my_plotter(ax1, data1, data2, { 'marker' : 'x' }) my_plotter(ax2, data3, data4, { 'marker' : 'o' }) |
交互模式
交互模式也可以通过matplotlib.pyplot.ion()
,然后关闭通过打开matplotlib.pyplot.ioff()
。
1 2 3 4 5 6 7 8 9 10 11 12 | #交互式示例import matplotlib.pyplot as plt plt.ion() plt.plot([ 1.6 , 2.7 ]) plt.title( "interactive test" ) plt.xlabel( "index" ) ax = plt.gca() ax.plot([ 3.1 , 2.2 ]) #旧版本调用draw()显示图象 plt.draw() |
1 2 3 4 5 6 7 8 | #非交互式示例 import numpy as np import matplotlib.pyplot as plt plt.ioff() for i in range ( 3 ): plt.plot(np.random.rand( 10 )) plt.show() |
在交互模式下,pyplot功能会自动绘制到屏幕上。
以交互方式绘制时,如果除了pyplot函数之外还使用对象方法调用,则draw()
只要您想刷新绘图,就会调用。
在要生成一个或多个图形的脚本中使用非交互模式,并在结束或生成一组新图形之前显示它们。在这种情况下,用于 show()
显示图形并阻止执行,直到您手动销毁它们。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)