【Python数据科学快速入门系列 | 06】Matplotlib数据可视化基础入门(一)

这是机器未来的第52篇文章

原文首发地址:https://robotsfutures.blog.csdn.net/article/details/126899226

【Python数据科学快速入门系列 | 06】Matplotlib数据可视化基础入门(一)

; 《Python数据科学快速入门系列》快速导航:

文章目录

写在开始:

  • 博客简介:专注AIoT领域,追逐未来时代的脉搏,记录路途中的技术成长!
  • 博主社区:AIoT机器智能, 欢迎加入!
  • 专栏简介:从0到1掌握数据科学常用库Numpy、Matploblib、Pandas。
  • 面向人群:AI初级学习者

前言

本文概述了matplotlib是什么,能做什么,怎么做的问题,是一篇matplotlib数据可视化入门文章,对于matplotlib的基础功能做了一个整体的使用说明。包含绘制第一个图表、绘图编程风格、Figure画布、axes绘图区,绘图样式等内容。

  1. Matplotlib简介

Matplotlib是一个数据可视化综合绘图库,python三剑客(Numpy、Matplotlib、Pandas)之一,用于创建静态图、动态图和Python中的交互式可视化图像。

只需几行代码就可以生成图表,直方图,功率谱,条形图,误差图,散点图等

说到数据可视化,我们为什么需要数据可视化?

如果将文本数据与图表数据相比较,人类的思维模式更适合于理解后者,原因在于图表数据更加直观且形象化,它对于人类视觉的冲击更强,这种使用图表来表示数据的方法被叫做数据可视化。

举个简单的例子:给你一只股票的分时数据,你认为一行行的数据直观呢,还是K线图直观呢?

  1. Matplotlib的安装

有2种主流的安装方式:

pip install matplotlib

conda install matplotlib
  1. 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()

【Python数据科学快速入门系列 | 06】Matplotlib数据可视化基础入门(一)

可以看到仅仅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()

【Python数据科学快速入门系列 | 06】Matplotlib数据可视化基础入门(一)

从结果来看,是一模一样的,好像更方便,仅仅3行代码就可以了。

第二种绘制方法绘制过程如下:

  • 隐式创建一个画布,并创建一个绘图区域
  • 然后绘制4个坐标点,绘制折线图

其实从编码风格来说,第一种是面向对象的编码风格,第二种是pyplot风格:依靠pyplot自动创建和管理图形和轴,并使用pyplot函数进行绘图。

一般来说,我们建议使用OO风格,特别是对于复杂的绘图,以及旨在作为更大项目的一部分重用的函数和脚本。但是,pyplot样式可以非常方便地进行快速交互工作。

3.2 绘图参数详解

【Python数据科学快速入门系列 | 06】Matplotlib数据可视化基础入门(一)

; 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()


【Python数据科学快速入门系列 | 06】Matplotlib数据可视化基础入门(一)
from matplotlib import pyplot as plt

fig,axs=plt.subplots(2,2)
plt.show()


【Python数据科学快速入门系列 | 06】Matplotlib数据可视化基础入门(一)

3.2.2 Axes绘图区域与Axis坐标轴

一个画布可以包含多个绘图区域,如上面的例子,一个画布包含4个绘图区域,每个绘图区域由2个(2D)或3个(3D)坐标轴组成。看下面的结构图的直观展示:

【Python数据科学快速入门系列 | 06】Matplotlib数据可视化基础入门(一)

; 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

【Python数据科学快速入门系列 | 06】Matplotlib数据可视化基础入门(一)

【Python数据科学快速入门系列 | 06】Matplotlib数据可视化基础入门(一)

【Python数据科学快速入门系列 | 06】Matplotlib数据可视化基础入门(一)

【Python数据科学快速入门系列 | 06】Matplotlib数据可视化基础入门(一)

【Python数据科学快速入门系列 | 06】Matplotlib数据可视化基础入门(一)

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/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球