这是机器未来的第52篇文章
原文首发地址:https://robotsfutures.blog.csdn.net/article/details/126899226
; 《Python数据科学快速入门系列》快速导航:
- 【Python数据科学快速入门系列 | 01】Numpy初窥——基础概念
- 【Python数据科学快速入门系列 | 02】创建ndarray对象的十多种方法
- 【Python数据科学快速入门系列 | 03】玩转数据摘取:Numpy的索引与切片
- 【Python数据科学快速入门系列 | 04】Numpy四则运算、矩阵运算和广播机制的爱恨情仇
- 【Python数据科学快速入门系列 | 05】常用科学计算函数
- 【Python数据科学快速入门系列 | 06】Matplotlib数据可视化基础入门
文章目录
- 《Python数据科学快速入门系列》快速导航:
- 前言
- 1. Matplotlib简介
- 2. Matplotlib的安装
- 3. Matplotlib的基础使用
* - 3.1 第一个Matplot例子:绘制折线图
- 3.2 编码风格
- 3.2 绘图参数详解
–
写在开始:
- 博客简介:专注AIoT领域,追逐未来时代的脉搏,记录路途中的技术成长!
- 博主社区:AIoT机器智能, 欢迎加入!
- 专栏简介:从0到1掌握数据科学常用库Numpy、Matploblib、Pandas。
- 面向人群:AI初级学习者
前言
本文概述了matplotlib是什么,能做什么,怎么做的问题,是一篇matplotlib数据可视化入门文章,对于matplotlib的基础功能做了一个整体的使用说明。包含绘制第一个图表、绘图编程风格、Figure画布、axes绘图区,绘图样式等内容。
- Matplotlib简介
Matplotlib是一个数据可视化综合绘图库,python三剑客(Numpy、Matplotlib、Pandas)之一,用于创建静态图、动态图和Python中的交互式可视化图像。
只需几行代码就可以生成图表,直方图,功率谱,条形图,误差图,散点图等。
说到数据可视化,我们为什么需要数据可视化?
如果将文本数据与图表数据相比较,人类的思维模式更适合于理解后者,原因在于图表数据更加直观且形象化,它对于人类视觉的冲击更强,这种使用图表来表示数据的方法被叫做数据可视化。
举个简单的例子:给你一只股票的分时数据,你认为一行行的数据直观呢,还是K线图直观呢?
- Matplotlib的安装
有2种主流的安装方式:
- 第一种直接安装Anaconda就可以自动安装matplotlib库,可以参考博主之前的文章:Python零基础快速入门系列|01】人工智能序章:开发环境搭建Anaconda+VsCode+JupyterNotebook(零基础启动)
- 第二种直接使用命令安装
pip install matplotlib
或
conda install matplotlib
- Matplotlib的基础使用
3.1 第一个Matplot例子:绘制折线图
from matplotlib import pyplot as plt
fig,ax=plt.subplots()
ax.plot([1,2,3,4],[1,4,2,3]);
plt.show()
可以看到仅仅4行代码就生成了非常好看的折线图,C语言开发工程师已经哭晕…
那么它到底怎么做的呢?
- 首先创建了一个画布fig
- 然后创建了一个绘图区域ax(axes),这个绘图区域有2个坐标轴axis,分别在横轴和纵轴。
- 然后绘图区域对象ax调用了方法plot绘制了4个坐标点,形成折线图。
3.2 编码风格
有人可能注意到我们在网上看到的绘图代码好像不是这样的,直接使用plt就可以绘制了,就像这样:
from matplotlib import pyplot as plt
plt.plot([1,2,3,4],[1,4,2,3]);
plt.show()
从结果来看,是一模一样的,好像更方便,仅仅3行代码就可以了。
第二种绘制方法绘制过程如下:
- 隐式创建一个画布,并创建一个绘图区域
- 然后绘制4个坐标点,绘制折线图
其实从编码风格来说,第一种是面向对象的编码风格,第二种是pyplot风格:依靠pyplot自动创建和管理图形和轴,并使用pyplot函数进行绘图。
一般来说,我们建议使用OO风格,特别是对于复杂的绘图,以及旨在作为更大项目的一部分重用的函数和脚本。但是,pyplot样式可以非常方便地进行快速交互工作。
3.2 绘图参数详解
; 3.2.1 Figure画布
首先创建的就是画布,创建画布的方式有多种
from matplotlib import pyplot as plt
fig = plt.figure()
plt.show()
<figure 0 size 640x480 with axes>
</figure>
from matplotlib import pyplot as plt
fig,ax=plt.subplots()
plt.show()
from matplotlib import pyplot as plt
fig,axs=plt.subplots(2,2)
plt.show()
3.2.2 Axes绘图区域与Axis坐标轴
一个画布可以包含多个绘图区域,如上面的例子,一个画布包含4个绘图区域,每个绘图区域由2个(2D)或3个(3D)坐标轴组成。看下面的结构图的直观展示:
; 3.2.3 输入数据的类型
绘图函数需要 numpy.array 或 numpy.ma.masked_array 作为输入,或者可以传递给 numpy.asarray 的对象转换。
x, y array-like or scalar
3.2.4 绘图样式
3.2.4.1 标准表示
- color 支持颜色英文名称和十六进制颜色代码,例如black和#000000
- linewidth 浮点类型
- linestyle
linestyledescription '-'
or 'solid'
实线 '--'
or 'dashed'
杠虚线 '-.'
or 'dashdot'
点杠虚线 ':'
or 'dotted'
点虚线 'none'
'None'
' '
, or ''
- marker
marker样式非常多,更多样式参考官方文档:https://matplotlib.org/stable/api/markers_api.html#module-matplotlib.markers
triangle_up "<"< code><img src="https://img-blog.csdnimg.cn/img_convert/fac1ccc6cb54f2cf15013de7c9704c59.png"><p class="node-read-div2p">triangle_left</p><code>">"</code><img src="https://img-blog.csdnimg.cn/img_convert/cbe206e55ec13325cec8ddba2e421c3d.png"><p class="node-read-div2p">triangle_right</p><code>"1"</code><img src="https://img-blog.csdnimg.cn/img_convert/1df73fd79d0a22dbbc93e7998f67eda4.png"><p class="node-read-div2p">tri_down</p><code>"2"</code><img src="https://img-blog.csdnimg.cn/img_convert/c4e16469f9c7e737a8c3f7a9ab7e8c0d.png"><p class="node-read-div2p">tri_up</p><code>"3"</code><img src="https://img-blog.csdnimg.cn/img_convert/5d39eb522b03958841179fbdf1109f8a.png"><p class="node-read-div2p">tri_left</p><code>"4"</code><img src="https://img-blog.csdnimg.cn/img_convert/4d641ce1f625823b0b9283c64690e556.png"><p class="node-read-div2p">tri_right</p><code>"8"</code><img src="https://img-blog.csdnimg.cn/img_convert/02f5fbaf0285f6cd7795d11d59dec38e.png"><p class="node-read-div2p">octagon</p><code>"s"</code><img src="https://img-blog.csdnimg.cn/img_convert/6ad52f03d59489a74f618cb8f63008b4.png"><p class="node-read-div2p">square</p><code>"p"</code><img src="https://img-blog.csdnimg.cn/img_convert/8144227ac1db71103827a4c143656ec9.png"><p class="node-read-div2p">pentagon</p><code>"P"</code><img src="https://img-blog.csdnimg.cn/img_convert/24a6c00a86e9b2489b028924991e0be9.png"><p class="node-read-div2p">plus (filled)</p><code>"*"</code><img src="https://img-blog.csdnimg.cn/img_convert/20d72344421e3efeabb523ab68a0f62a.png"><p class="node-read-div2p">star</p><code>"h"</code><img src="https://img-blog.csdnimg.cn/img_convert/bf15f4f53ec309acdc7a06e5cf3098e0.png"><p class="node-read-div2p">hexagon1</p><code>"H"</code><img src="https://img-blog.csdnimg.cn/img_convert/816e852b0e41e8d08e733118cf7be271.png"><p class="node-read-div2p">hexagon2</p><code>"+"</code><img src="https://img-blog.csdnimg.cn/img_convert/21a929c736926c7957f6b8a65090d91e.png"><p class="node-read-div2p">plus</p><code>"x"</code><img src="https://img-blog.csdnimg.cn/img_convert/ff9a2cda18c1d07792ffa5c6078e47aa.png"><code>"X"</code><img src="https://img-blog.csdnimg.cn/img_convert/14b6b930e93d20d323ecfaf3c463c5a1.png"><p class="node-read-div2p">x (filled)</p><code>"D"</code><img src="https://img-blog.csdnimg.cn/img_convert/3b365815fbd2d04dc76d6c4fbba43af6.png"><p class="node-read-div2p">diamond</p><code>"d"</code><img src="https://img-blog.csdnimg.cn/img_convert/4e19ca6afbe9a67f0e0ccdc3552e908a.png"><p class="node-read-div2p">thin_diamond</p><code>"|"</code><img src="https://img-blog.csdnimg.cn/img_convert/b964116cf6716562c5c7e15e95489136.png"><p class="node-read-div2p">vline</p><code>"_"</code><img src="https://img-blog.csdnimg.cn/img_convert/cf659096e3c5c531136fec4b0d16f80e.png"><p class="node-read-div2p">hline</p><pre><code class="prism language-python"><span class="token triple-quoted-string string">"""
曲线样式例子1
"""</span></p>
<p><span class="token keyword">import</span> matplotlib <span class="token keyword">as</span> mpl
<span class="token keyword">import</span> matplotlib<span class="token punctuation">.</span>pyplot <span class="token keyword">as</span> plt
<span class="token keyword">import</span> numpy <span class="token keyword">as</span> np</p>
<p>fig<span class="token punctuation">,</span> ax <span class="token operator">=</span> plt<span class="token punctuation">.</span>subplots<span class="token punctuation">(</span>figsize<span class="token operator">=</span><span class="token punctuation">(</span><span class="token number">8</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">)</span><span class="token punctuation">)</span></p>
<p>x <span class="token operator">=</span> np<span class="token punctuation">.</span>linspace<span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token operator"><em></span>np<span class="token punctuation">.</span>pi<span class="token punctuation">,</span> <span class="token number">30</span><span class="token punctuation">)</span>
y1 <span class="token operator">=</span> np<span class="token punctuation">.</span>cos<span class="token punctuation">(</span>x<span class="token punctuation">)</span>
y2 <span class="token operator">=</span> np<span class="token punctuation">.</span>sin<span class="token punctuation">(</span>x<span class="token punctuation">)</span>
y3 <span class="token operator">=</span> np<span class="token punctuation">.</span>cos<span class="token punctuation">(</span><span class="token number">2</span><span class="token operator"></em></span>x<span class="token punctuation">)</span>
y4 <span class="token operator">=</span> np<span class="token punctuation">.</span>sin<span class="token punctuation">(</span><span class="token number">2</span><span class="token operator">*</span>x<span class="token punctuation">)</span></p>
<p>ax<span class="token punctuation">.</span>plot<span class="token punctuation">(</span>x<span class="token punctuation">,</span> y1<span class="token punctuation">,</span> color<span class="token operator">=</span><span class="token string">'#000000'</span><span class="token punctuation">,</span> linewidth<span class="token operator">=</span><span class="token number">3</span><span class="token punctuation">,</span> linestyle<span class="token operator">=</span><span class="token string">'--'</span><span class="token punctuation">,</span> marker<span class="token operator">=</span><span class="token string">'^'</span><span class="token punctuation">)</span></p>
<p>l<span class="token punctuation">,</span> <span class="token operator">=</span> ax<span class="token punctuation">.</span>plot<span class="token punctuation">(</span>x<span class="token punctuation">,</span> y2<span class="token punctuation">,</span> color<span class="token operator">=</span><span class="token string">'orange'</span><span class="token punctuation">,</span> linewidth<span class="token operator">=</span><span class="token number">2</span><span class="token punctuation">,</span> marker<span class="token operator">=</span><span class="token string">'*'</span><span class="token punctuation">)</span></p>
<p>l<span class="token punctuation">.</span>set_linestyle<span class="token punctuation">(</span><span class="token string">':'</span><span class="token punctuation">)</span></p>
<p>ax<span class="token punctuation">.</span>plot<span class="token punctuation">(</span>x<span class="token punctuation">,</span> y3<span class="token punctuation">,</span> color<span class="token operator">=</span><span class="token string">'red'</span><span class="token punctuation">,</span> linewidth<span class="token operator">=</span><span class="token number">6</span><span class="token punctuation">,</span> linestyle<span class="token operator">=</span><span class="token string">'-.'</span><span class="token punctuation">)</span></p>
<p>ax<span class="token punctuation">.</span>plot<span class="token punctuation">(</span>x<span class="token punctuation">,</span> y4<span class="token punctuation">,</span> color<span class="token operator">=</span><span class="token string">'green'</span><span class="token punctuation">,</span> linewidth<span class="token operator">=</span><span class="token number">2</span><span class="token punctuation">,</span> linestyle<span class="token operator">=</span><span class="token string">'-'</span><span class="token punctuation">)</span>
plt<span class="token punctuation">.</span>show<span class="token punctuation">(</span><span class="token punctuation">)</span></p>
<p></code></pre><p><br><img src="https://img-blog.csdnimg.cn/img_convert/00bac9ea46a69e8deeded744b80ba139.png"><br></p><h4>3.2.4.2 简写表示</h4><p>除了上面的设置方式之外,还有一种简写设置方式。</p><pre><code>plot([x], y, [fmt], <em>, data=None, </em>*kwargs)
</code></pre><pre><code>fmt = '[marker][line][color]'
或
fmt = '[color][marker][line]'
</code></pre><p>fmt的内容本身没有限定顺序,可以自由组合。</p><p>line指的是line_style,marker和line_style的取值和上面的表描述是一样的,颜色代码简写表示如下:</p><p><strong>颜色</strong></p><p>支持的颜色缩写是单字母代码</p><p class="node-read-div2p">特点颜色</p><code>'b'</code><p class="node-read-div2p">蓝色的</p><code>'g'</code><p class="node-read-div2p">绿色</p><code>'r'</code><p class="node-read-div2p">红色的</p><code>'c'</code><p class="node-read-div2p">青色</p><code>'m'</code><p class="node-read-div2p">品红</p><code>'y'</code><p class="node-read-div2p">黄色</p><code>'k'</code><p class="node-read-div2p">黑色的</p><code>'w'</code><p class="node-read-div2p">白色的</p><pre><code class="prism language-python"><span class="token keyword">import</span> matplotlib <span class="token keyword">as</span> mpl
<span class="token keyword">import</span> matplotlib<span class="token punctuation">.</span>pyplot <span class="token keyword">as</span> plt
<span class="token keyword">import</span> numpy <span class="token keyword">as</span> np</p>
<p>x <span class="token operator">=</span> np<span class="token punctuation">.</span>linspace<span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token operator"><em></span>np<span class="token punctuation">.</span>pi<span class="token punctuation">,</span> <span class="token number">30</span><span class="token punctuation">)</span>
y1 <span class="token operator">=</span> np<span class="token punctuation">.</span>cos<span class="token punctuation">(</span>x<span class="token punctuation">)</span>
y2 <span class="token operator">=</span> np<span class="token punctuation">.</span>sin<span class="token punctuation">(</span>x<span class="token punctuation">)</span>
y3 <span class="token operator">=</span> np<span class="token punctuation">.</span>cos<span class="token punctuation">(</span><span class="token number">2</span><span class="token operator"></em></span>x<span class="token punctuation">)</span></p>
<p>plt<span class="token punctuation">.</span>plot<span class="token punctuation">(</span>x<span class="token punctuation">,</span> y1<span class="token punctuation">,</span> <span class="token string">'go--'</span><span class="token punctuation">,</span> linewidth<span class="token operator">=</span><span class="token number">2</span><span class="token punctuation">,</span> markersize<span class="token operator">=</span><span class="token number">6</span><span class="token punctuation">)</span></p>
<p>plt<span class="token punctuation">.</span>plot<span class="token punctuation">(</span>x<span class="token punctuation">,</span> y2<span class="token punctuation">,</span> <span class="token string">'c^:'</span><span class="token punctuation">,</span> linewidth<span class="token operator">=</span><span class="token number">2</span><span class="token punctuation">,</span> markersize<span class="token operator">=</span><span class="token number">3</span><span class="token punctuation">)</span></p>
<p>plt<span class="token punctuation">.</span>plot<span class="token punctuation">(</span>x<span class="token punctuation">,</span> y3<span class="token punctuation">,</span> <span class="token string">'b*-.'</span><span class="token punctuation">,</span> linewidth<span class="token operator">=</span><span class="token number">2</span><span class="token punctuation">,</span> markersize<span class="token operator">=</span><span class="token number">3</span><span class="token punctuation">)</span>
</code></pre><pre><code>[<matplotlib.lines.line2d at 0x7fd1e088b6a0>]
</matplotlib.lines.line2d></code></pre><p><br><img src="https://img-blog.csdnimg.cn/img_convert/9ab4e56c0fb38f833a645c025c08100c.png"></p><p>未完待续,后续详见下一篇文章:<br><a href="https://robotsfutures.blog.csdn.net/article/details/126900121">【Python数据科学快速入门系列 | 06】Matplotlib数据可视化基础入门(二)</a></p><p><strong>— 博主热门专栏推荐 —</strong></p><ul><li><a href="https://blog.csdn.net/robotfutures/category_11815731.html?spm=1001.2014.3001.5482">Python零基础快速入门系列</a></li><li><a href="https://blog.csdn.net/robotfutures/category_12002712.html?spm=1001.2014.3001.5482">深入浅出i.MX8企业级开发实战系列<br></a></li><li><a href="https://blog.csdn.net/robotfutures/category_11899631.html?spm=1001.2014.3001.5482">MQTT从入门到提高系列</a></li><li><a href="https://blog.csdn.net/robotfutures/category_11815738.html?spm=1001.2014.3001.5482">物体检测快速入门系列</a></li><li><a href="https://blog.csdn.net/robotfutures/category_11868682.html?spm=1001.2014.3001.5482">自动驾驶模拟器AirSim快速入门</a></li><li><a href="https://blog.csdn.net/robotfutures/category_11928712.html?spm=1001.2014.3001.5482">安全利器SELinux入门系列</a></li><li><a href="https://blog.csdn.net/robotfutures/category_11933999.html?spm=1001.2014.3001.5482">Python数据科学快速入门系列</a></li></ul><p><img src="https://img-blog.csdnimg.cn/img_convert/4a80374220af4264f67e23478ec67891.png"></p><!--"<-->
Original: https://blog.csdn.net/RobotFutures/article/details/126899226
Author: 机器未来
Title: 【Python数据科学快速入门系列 | 06】Matplotlib数据可视化基础入门(一)
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/669028/
转载文章受原作者版权保护。转载请注明原作者出处!