本文转载自http://blog.csdn.net/mao19931004/article/details/51915016

Matplotlib简单入门学习 - CSDN博客

                                            Matplotlib简单入门学习                    </a>
</span>
</h1>
</div>
<div class="article_manage clearfix">
<div class="article_l">
<span class="link_categories">
标签:
<a href="http://so.csdn.net/so/search/s.do?q=python&t=blog" target="_blank">python</a>
<a href="http://so.csdn.net/so/search/s.do?q=matplotlib&t=blog" target="_blank">matplotlib</a>
</span>
</div>
<div class="article_r">
<span class="link_postdate">2016年07月15日 11:18:06</span>
<span class="link_view" title="阅读次数">7611人阅读</span>
<span class="link_comments" title="评论次数"> <a href="javascript:void(0);" class="btn-pinglun">评论</a>(0)</span>
<span class="link_collect csdn-tracking-statistics" data-pid="blog" data-mod="popu_171">
<a href="javascript:void(0);" onclick="javascript:collectArticle('Matplotlib简单入门学习','51915016');return false;" title="收藏">收藏</a>
</span>
<span class="link_report">
<a href="javascript:void(0);" onclick="javascript:report(51915016, 2);return false;" title="举报">举报</a>
</span>
</div>

版权声明:本文为博主原创文章,未经博主允许不得转载。 //blog.csdn.net/mao19931004/article/details/51915016

因为学习机器学习以及试图通过python实现相应的算法,因此学习了Matplotlib中的画图,那么就问到,问啥不用matlab呢,答:多一门技术,多一口饭;而且发现Matplotlib的画图功能还是蛮强大的,这次仅仅只是学习了以前在MATLAB里面会的相应的东西,然后学习一下在python中对应的知识。

matplotlib在Python中应用最多的2D图像的绘图工具包,使用matplotlib能够非常简单的可视化数据。在matplotlib中使用最多的模块就是pyplot。pyplot非常接近Matlab的绘图实现,而且大多数的命令及其类似Matlab.当然,与Matlab类似,需要很多的数学运算,因此numpy这个组件同样是必不可少的。所以很多人说python+matplotlib+numpy就是MATLAB。当然在此之前,需要配置好相应的环境,在Linux
14.04下版本,利用sublime Text 3可以非常快捷的搭建好开发环境,可以参见博客http://blog.csdn.net/mao19931004/article/details/51834616

首先,在matplotlib建议使用别名,引入包,这样方便以后模块的使用,一般以以下两句开始:

import numpy as np
import matplotlib.pyplot as plt

接下来以绘制正弦余弦函数曲线为例,介绍相应的函数。

  • 使用默认的绘图属性绘图

x=np.linspace(-np.pi,np.pi,256,endpoint=True)
C,S=np.cos(x),np.sin(x)
plt.plot(x,C)
plt.plot(x,S)

  • 对线条的颜色,宽度进行设置,就像在matlab中一样:

plt.plot(x,C,color='red',linewidth=2.5,linestyle='-')
plt.plot(x,S,color='blue',linewidth=2.5,linestyle='-')

  • 对plot函数的讲解

上面介绍了简单的绘图,用的基本上都是plot,因此有必要对plot函数进行简单的介绍。官网参考网址:plot使用。熟悉Matlab的人对plot不会陌生,在matplotlib中的使用方式大致和Matlab中是一致的,使用plot,可以对点的标记的样式以及线条的样式进行设置。

函数的声明为:matplotlib.pyplot.plot(*args, **kwargs)。args的参数的长度是不定
的,可以设置很多的属性,kwargs主要是应用于设置线条的属性。对于标注和线条的样式,可以通过简单的字符来表示:

以及标注和线条的颜色:

当然线条的颜色可以以其他方式定制。比如16进制的字符串('#008000')或者是RGB、RGBA元组的方式RGB
or RGBA ((0,1,0,1)) 来实现不同的颜色。

在接下来会应用到更多的属性。对于Line2D的具体细节,也就是线条的属性等,可以进一步查阅Line2D.

  • 设置横轴、纵轴的界限以及标注

很多时候,需要设置横轴和纵轴的界面,从而得到更加清晰明了的图形:

plt.xlim(X.min()*1.1, X.max()*1.1)
plt.ylim(C.min()*1.1, C.max()*1.1)

此外为了更好的表示横轴和纵轴数据的含义,可以通过ticks对横轴和纵轴的含义进行设置和定制。

plt.xlim(x.min()*1.1, x.max()*1.1)
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],
[r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$']) plt.ylim(C.min()1.1,C.max()1.1)

plt.yticks([-1, 0, +1],

[r'$-1$', r'$0$', r'$+1$'])

看到yticks和xticks后面一串的数字,看到就觉得可能有点不知道写的什么,熟悉LaTex的人觉得我们这种想法的人有点傻。其实就是很简单的字符串,但是是为了方便Latex去解析这段字符串。一般以r开始,中间的字符串用$字符串$包围起来。这里是matplotlib中的有关LaTex的使用介绍:Latex的使用

上面的\pi代表的意义就是π。以下是有关希腊字符的表示:

最后的显示图像为:

这样数据的意义就更加清晰明了了。

  • 设置Spines的位置。

Spines
are the lines connecting the axis tick marks and noting the boundaries of the data area. They can be placed at arbitrary positions。

Spines应该可以理解为坐标轴的位置。但是也不全是,因为它分为上下左右四个位置,就如上图的四个边界,那么左边界和下边界就是我们通常认为的横坐标和纵坐标。我们可以将上边界和右边界隐藏,同时将左边界和下边界移动至中心的位置,看看效果:

这样就和我们通常画数学曲线的方式就一样了。

实现的完整代码是:

import numpy as np
import matplotlib.pyplot as plt ax = plt.subplot(111) ax.spines['right'].set_color('none')

ax.spines['top'].set_color('none')

ax.xaxis.set_ticks_position('bottom')

ax.spines['bottom'].set_position(('data',0))

ax.yaxis.set_ticks_position('left')

ax.spines['left'].set_position(('data',0)) x=np.linspace(-np.pi,np.pi,256,endpoint=True)

C,S=np.cos(x),np.sin(x) plt.plot(x,C,color='red',linewidth=2.5,linestyle='-',label=r'$cos(t)$')

plt.plot(x,S,color='blue',linewidth=2.5,linestyle='-',label=r'$sin(t)$') plt.xlim(x.min()1.1, x.max()1.1)

plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],

[r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$']) plt.ylim(C.min()1.1,C.max()1.1)

plt.yticks([-1, 0, +1],

[r'$-1$', r'$0$', r'$+1$'])

plt.show()

  • 添加图例说明

说到作图,当然必须要有图例,图例是帮助我们理解曲线指代的类型,如果让我们不去仔细分析曲线,就可以知道曲线指代的类型。比如上图的正弦和余弦,我们要经过分析过后,才知道红色是余弦函数,蓝色是正弦函数,因此图例就非常重要的帮助我们分析图形。

在画图时候,我们需要多线条加上label,这样才可以在最后将图例显示出来。

plt.plot(x,C,color='red',linewidth=2.5,linestyle='-',label=r'$cos(t)$')
plt.plot(x,S,color='blue',linewidth=2.5,linestyle='-',label=r'$sin(t)$')
plt.legend(loc='upper left',frameon=False)

位置的可选参数有:

函数的参数的关键字有:

大致的plot的绘图方式入门就这么多,当然plot还有很多很多的内容,需要的什么比较好的方式绘图,就可以去参阅相关的资料,当然以后如果遇到新的内容,会继续介绍。

  • 上一篇
    Qt (六) -- Qt5.5.1实现通用串口程序
  •                                 <li class="next_article">
    <span onclick="_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_xiayipian']);location.href='//blog.csdn.net/mao19931004/article/details/51917680';">下一篇</span>
    <a href="//blog.csdn.net/mao19931004/article/details/51917680" onclick="_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_xiayipian'])">numpy简单入门学习</a>
    </li>
    </ul>
    <div style="clear:both; height:10px;"></div>
    </div> <!--文章底部广告位-->
    <div id="article_ad" style="padding-bottom: 16px;border-left: 1px solid #ccc;border-right: 1px solid #ccc;background: #fff;text-align: center;">
    <!-- 广告位:PC端-博客详情页底部banner-960*90 -->
    <script type="text/javascript" src="//cee1.iteye.com/kfunnhoou.js"></script>
    </div> <!--评论区-->
    <div class="comment_class">
    <div class="commentform" id="comments"></div>
    <div id="comment_form"> </div>
    <div id="comment_title" class="panel_head">
    <span class="see_comment">查看评论</span><a name="comments" ></a></div>
    <div id="comment_list"> </div>
    <div id="comment_bar">
    </div>
    </div> <!--推荐列表-->
    <div class="recommend_list">
    <dl class="clearfix csdn-tracking-statistics recommend_article" data-mod="popu_614" data-poputype="feed" data-feed-show="false" data-dsm="post">
    <a href="//blog.csdn.net/u011497262/article/details/52325705" target="_blank" strategy="BlogCommendFromBaidu_0">
    <dd>
    <h2>一份非常好的Matplotlib 教程</h2>
    <div class="summary">
    Matplotlib 教程

    发表于 2014 年 09 月 11 日 | 分类于 Algorithm

    and Computer Science | 本文共被围观 52922 ...

                    <ul>
<li class="avatar_img"><img src="//avatar.csdn.net/6/5/3/3_u011497262.jpg" alt="u011497262" title="u011497262"></li>
<li class="user_name">u011497262</li>
<li class="time">2016年08月26日 10:05</li>
<li class="visited_num"><i class="icon iconfont icon-read"></i><span>46921</span></li>
</ul>
</dd>
</a>
</dl>
<dl class="clearfix csdn-tracking-statistics recommend_article" data-mod="popu_614" data-poputype="feed" data-feed-show="false" data-dsm="post">
<a href="//blog.csdn.net/claroja/article/details/70173026" target="_blank" strategy="BlogCommendFromBaidu_1">
<dd>
<h2>Python 绘图 Matplotlib 快速参考手册</h2>
<div class="summary">
http://www.labri.fr/perso/nrougier/teaching/matplotlib/#quick-references

1 作图函数

1.1 默认参数作图import n...

                    <ul>
<li class="avatar_img"><img src="//avatar.csdn.net/0/E/3/3_claroja.jpg" alt="claroja" title="claroja"></li>
<li class="user_name">claroja</li>
<li class="time">2017年04月18日 13:34</li>
<li class="visited_num"><i class="icon iconfont icon-read"></i><span>2201</span></li>
</ul>
</dd>
</a>
</dl>
<dl class="">
<script>
(function() {
var s = "_" + Math.random().toString(36).slice(2);
document.write('<div id="' + s + '"></div>');
(window.slotbydup=window.slotbydup || []).push({
id: '4765209',
container: s,
size: '808,120',
display: 'inlay-fix'
});
})();
</script>
</dl>
<dl class="clearfix csdn-tracking-statistics recommend_article" data-mod="popu_614" data-poputype="feed" data-feed-show="false" data-dsm="post">
<a href="//blog.csdn.net/wizardforcel/article/details/54407212" target="_blank" strategy="BlogCommendFromBaidu_2">
<dd>
<h2>Python 数据科学入门教程:Matplotlib</h2>
<div class="summary">
Matplotlib 入门教程

来源:Introduction to Matplotlib and basic line

译者:飞龙

协议:CC BY-NC-SA 4.0

...

                    <ul>
<li class="avatar_img"><img src="//avatar.csdn.net/C/B/0/3_wizardforcel.jpg" alt="wizardforcel" title="wizardforcel"></li>
<li class="user_name">wizardforcel</li>
<li class="time">2017年01月13日 11:45</li>
<li class="visited_num"><i class="icon iconfont icon-read"></i><span>21206</span></li>
</ul>
</dd>
</a>
</dl>
<dl class="clearfix csdn-tracking-statistics recommend_article" data-mod="popu_614" data-poputype="feed" data-feed-show="false" data-dsm="post">
<a href="//blog.csdn.net/Eddy_zheng/article/details/48713449" target="_blank" strategy="BlogCommendFromBaidu_3">
<dd>
<h2>python matplotlib模块——绘制三维图形、三维数据散点图</h2>
<div class="summary">
python matplotlib模块,是扩展的MATLAB的一个绘图工具库。他可以绘制各种图形,可是最近最的一个小程序,得到一些三维的数据点图,就学习了下python中的matplotlib模块,如... </div> <ul>
<li class="avatar_img"><img src="//avatar.csdn.net/3/1/2/3_eddy_zheng.jpg" alt="Eddy_zheng" title="Eddy_zheng"></li>
<li class="user_name">Eddy_zheng</li>
<li class="time">2015年09月24日 16:55</li>
<li class="visited_num"><i class="icon iconfont icon-read"></i><span>61848</span></li>
</ul>
</dd>
</a>
</dl>
<dl class="clearfix csdn-tracking-statistics recommend_article" data-mod="popu_614" data-poputype="feed" data-feed-show="false" data-dsm="post">
<a href="//blog.csdn.net/ice_martin/article/details/61616987" target="_blank" strategy="BlogCommendFromBaidu_4">
<dd>
<h2>Matplotlib绘图和可视化</h2>
<div class="summary">
Matplotlib绘图和可视化Matplotlib绘图和可视化

matplotlib API 入门

Figure和Subplot

颜色标记和线型

刻度标签和图例

注解以及在Subplot上绘图

将图...

                    <ul>
<li class="avatar_img"><img src="//avatar.csdn.net/0/C/3/3_ice_martin.jpg" alt="ice_martin" title="ice_martin"></li>
<li class="user_name">ice_martin</li>
<li class="time">2017年03月12日 14:05</li>
<li class="visited_num"><i class="icon iconfont icon-read"></i><span>1794</span></li>
</ul>
</dd>
</a>
</dl>
<dl class="clearfix csdn-tracking-statistics recommend_article" data-mod="popu_614" data-poputype="feed" data-feed-show="false" data-dsm="post">
<a href="//blog.csdn.net/gfsfg8545/article/details/9714163" target="_blank" strategy="BlogCommendFromBaidu_5">
<dd>
<h2>使用 python Matplotlib 库绘图</h2>
<div class="summary">
Matplotlib的安装可以参见 官网链接 http://matplotlib.org/users/installing.html

下面总结步骤如下:

windows 注意下载.exe格式 直接安...

                    <ul>
<li class="avatar_img"><img src="//avatar.csdn.net/3/3/3/3_gfsfg8545.jpg" alt="gfsfg8545" title="gfsfg8545"></li>
<li class="user_name">gfsfg8545</li>
<li class="time">2013年08月02日 12:59</li>
<li class="visited_num"><i class="icon iconfont icon-read"></i><span>44921</span></li>
</ul>
</dd>
</a>
</dl>
<dl class="clearfix csdn-tracking-statistics downloadElement" data-mod="popu_614" data-poputype="feed" data-feed-show="false" data-dsm="post">
<a class="clearfix" href="https://download.csdn.net/download/mirabelle521/9098701" target="_blank" strategy="BlogCommendFromBaidu_6">
<dd class="floatL">
<div class="summary">
<h2>matplotlib</h2>
<div class="summary">
<ul>
<li class="time">2015年09月11日 16:33</li>
<li class="visited_num fileSize">3.93MB</li>
<li class="download_btn">下载</li>
</ul>
</div>
</div>
</dd>
<dt class="floatR"><img class="maxwidth" src="http://csdnimg.cn/release/download/old_static/images/minetype/exe.svg" alt="" title=""/></dt>
</a>
</dl>
<dl class="clearfix csdn-tracking-statistics recommend_article" data-mod="popu_614" data-poputype="feed" data-feed-show="false" data-dsm="post">
<a href="//blog.csdn.net/pipisorry/article/details/40005163" target="_blank" strategy="BlogCommendFromBaidu_7">
<dd>
<h2>matplotlib绘图实例:pyplot、pylab模块及作图参数</h2>
<div class="summary">
http://blog.csdn.net/pipisorry/article/details/40005163

Matplotlib绘图实例(使用pyplot模块)

matplotli...

                    <ul>
<li class="avatar_img"><img src="//avatar.csdn.net/5/5/8/3_pipisorry.jpg" alt="pipisorry" title="pipisorry"></li>
<li class="user_name">pipisorry</li>
<li class="time">2014年10月12日 00:47</li>
<li class="visited_num"><i class="icon iconfont icon-read"></i><span>55438</span></li>
</ul>
</dd>
</a>
</dl>
<dl class="clearfix csdn-tracking-statistics recommend_article" data-mod="popu_614" data-poputype="feed" data-feed-show="false" data-dsm="post">
<a href="//blog.csdn.net/u012192662/article/details/20523679" target="_blank" strategy="BlogCommendFromBaidu_8">
<dd>
<h2>python科学计算学习二:matplotlib绘图(极坐标 3D绘图等)(3)</h2>
<div class="summary">
matplotlib做图 </div> <ul>
<li class="avatar_img"><img src="//avatar.csdn.net/3/2/7/3_u012192662.jpg" alt="u012192662" title="u012192662"></li>
<li class="user_name">u012192662</li>
<li class="time">2014年03月05日 11:40</li>
<li class="visited_num"><i class="icon iconfont icon-read"></i><span>30347</span></li>
</ul>
</dd>
</a>
</dl>
<dl class="clearfix csdn-tracking-statistics recommend_article" data-mod="popu_614" data-poputype="feed" data-feed-show="false" data-dsm="post">
<a href="//blog.csdn.net/guduruyu/article/details/78050268" target="_blank" strategy="BlogCommendFromBaidu_9">
<dd>
<h2>【python图像处理】python绘制3D图形</h2>
<div class="summary">
3D图形在数据分析、数据建模、图形和图像处理等领域中都有着广泛的应用,下面将给大家介绍一下如何使用python进行3D图形的绘制,包括3D散点、3D表面、3D轮廓、3D直线(曲线)以及3D文字等的绘制... </div> <ul>
<li class="avatar_img"><img src="//avatar.csdn.net/4/4/0/3_guduruyu.jpg" alt="guduruyu" title="guduruyu"></li>
<li class="user_name">guduruyu</li>
<li class="time">2017年09月21日 11:45</li>
<li class="visited_num"><i class="icon iconfont icon-read"></i><span>4624</span></li>
</ul>
</dd>
</a>
</dl>
</div>

#popup_mask
{
position: absolute;
width: 100%;
height: 100%;
background: #000;
z-index: 9999;
left: 0px;
top: 0px;
opacity: 0.3;
filter: alpha(opacity=30);
display: none;
}

</style>
<div class="clear">
</div>

matplotlib绘图基本用法-转自(http://blog.csdn.net/mao19931004/article/details/51915016)的更多相关文章

  1. 炸天的3D引擎OpenCASCADE的用法及案例(https://blog.csdn.net/xipengbozai/article/details/117044032?spm=1001.2014.3001.5502)

    What CASCADE?Open CASCADE(简称OCC)平台是由法国Matra Datavision公司开发的CAD/CAE/CAM软件平台,可以说是世界上最重要的几何造型基础软件平台之一.开 ...

  2. js中index()的四种经典用法(转https://blog.csdn.net/superit401/article/details/51726826)

    <!doctype html><html lang="en"> <head> <meta charset="UTF-8" ...

  3. Postman用法简介----https://blog.csdn.net/flowerspring/article/details/52774399

    https://blog.csdn.net/flowerspring/article/details/52774399 Postman用法简介

  4. Socket的用法——NIO包下SocketChannel的用法 ———————————————— 版权声明:本文为CSDN博主「茶_小哥」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/ycgslh/article/details/79604074

    服务端代码实现如下,其中包括一个静态内部类Handler来作为处理器,处理不同的操作.注意在遍历选择键集合时,没处理完一个操作,要将该请求在集合中移除./*模拟服务端-nio-Socket实现*/pu ...

  5. Win32消息循环机制等【转载】http://blog.csdn.net/u013777351/article/details/49522219

    Dos的过程驱动与Windows的事件驱动 在讲本程序的消息循环之前,我想先谈一下Dos与Windows驱动机制的区别: DOS程序主要使用顺序的,过程驱动的程序设计方法.顺序的,过程驱动的程序有一个 ...

  6. 转:Java面试题集(51-70) http://blog.csdn.net/jackfrued/article/details/17403101

    Java面试题集(51-70) Java程序员面试题集(51-70) http://blog.csdn.net/jackfrued/article/details/17403101 摘要:这一部分主要 ...

  7. https://blog.csdn.net/u011489043/article/details/68488459

    转自https://blog.csdn.net/u011489043/article/details/68488459 String 字符串常量   StringBuffer 字符串变量(线程安全) ...

  8. [转帖] select、poll、epoll之间的区别总结[整理] + 知乎大神解答 https://blog.csdn.net/qq546770908/article/details/53082870 不过图都裂了.

    select.poll.epoll之间的区别总结[整理] + 知乎大神解答 2016年11月08日 15:37:15 阅读数:2569 http://www.cnblogs.com/Anker/p/3 ...

  9. IntelliJ Idea 常用快捷键列表 (需整理下) https://blog.csdn.net/dc_726/article/details/42784275

    [常规] https://blog.csdn.net/dc_726/article/details/42784275https://jingyan.baidu.com/article/59a015e3 ...

随机推荐

  1. 截止2017年,最新的全国行政区划代码数据源(xml)

    <?xml version="1.0" encoding="utf-8"?> <Root xmlns:xsd="http://www ...

  2. request&response

    /* request&response 1.什么是HttpServletRequest HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP ...

  3. ubuntu设置 SSH 通过密钥对登录

    1. 制作密钥对 首先在服务器上制作密钥对.登录到打算使用密钥登录的账户,然后执行以下命令: [root@host ~]$ ssh-keygen <== 建立密钥对 Generating pub ...

  4. php中获取当前时间

    因为php种有时区的设置,默认与我们这边差8小时:所以我们直接使用data方法的话,得到的时间是不准确的 所以我们在开头设置时区 //设置时区的方法: date_default_timezone_se ...

  5. symfony generate bundle autoload failed的解决办法

    I also encountered this problem,I add new bundle namespace in composer.json"autoload": { & ...

  6. LINUX FTPshez

    https://www.jb51.net/article/132337.htm FTPQ重启: service vsftpd restart

  7. 刘志梅201771010115.《面向对象程序设计(java)》第十四周学习总结

    实验十四  Swing图形界面组件 实验时间 20178-11-29 1.实验目的与要求 (1)设计模式:反复使用.经过分类编目的.代码设计经验的总结. 在Alexander的模式分类和软件模式的分类 ...

  8. 多对多manytomany

    ----------------------多对多manytomany 要点: 多对多必须有mappedBy,让一个端维护关系 多对多会创建一张关系表,维护关系就是维护第三张表. 所以增加关系,则在集 ...

  9. FIFO使用技巧

    FPGA中,经常会用到FIFO来缓冲数据或者跨时钟传递数据. 1.Almost full & Almost empty 作为初学者,最开始使用FIFO的时候,对于它的理解,无非是配置好位宽.深 ...

  10. Python unittest discover()方法与执行顺序补充

    一.discover更多测试用例 可以根据不同的功能创建不同的测试文件,甚至是不同的测试目录,测试文件中还可以将不同的小功能划分为不同的测试类,在类下编写测试用例,让整体结构更加清晰 但通过addTe ...