Matplotlib将大部分的绘图对象都封装成为对象,故理论上所有的图表元素(如Line2D, Text,Label等)都是对象,都可以将其在图表中提取出来并配置实例的属性。同时,Matplotlib提供了一套类似于Matlab的API接口,可以让我们能够实现快速绘图而无需进行相对于复杂的对象操作。快速绘图适合于简单的绘图程序,而面向对象则适合于复杂的大型程序。

1. 采用matplotlib.pyplot接口进行绘图,返回的是一个Line2D对象(每一条线返回一个Line2D对象,且不管你的图上有多少线,都是返回一个列表

#-*- coding:utf-8 -*-
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
%pylab
%matplotlib inline
#创建示例用的x轴数据
x=np.linspace(-2,2,100)
#定义需要用到的计算函数
def func(inx):
    return (-np.exp(-x))*np.sin(np.pi*x)

line,=plt.plot(x,func(x))#只返回第一个对象

  • 也可以给plt.plot()函数传递多个序列(元组或列表),每两个序列是一个X,Y向量对,就可以在一个图里存在多条曲线。

    line1,line2=plt.plot(x,-x*2,x,np.sin(x**2*np.pi))#返回两个对象,分别赋值在line1和line2上

设置曲线的属性:

  • 通过plot()函数中的关键字参数进行设置;
  • 通过Line2D的Setter方法(set_*)进行设置;
  • 通过pyplot.setp()进行批量设置;

#通过Line2D的Setter方法(set_*)进行设置;
#主要是通过返回的Line2D对象进行设置,这里的设置非常多,可以参考手册内容
line1,line2=plt.plot(x,-x*2,x,np.sin(x**2*np.pi))
#设置line1的属性
line1.set_linewidth(2)
line1.set_color('b')
line1.set_linestyle("--")
#设置line2的属性
line2.set_color('k')
line2.set_linestyle('-')

#通过pyplot.setp()进行批量设置;
line1,line2=plt.plot(x,-x*2,x,np.sin(x**2*np.pi))
plt.setp(line1,color='r',linewidth=2)#采用关键字参数
plt.setp(line2,"color",'k','linewidth',2,'linestyle','-.')#采用变量形式,这时候属性必须用字符串形式成对表示(数值除外)

###-----------------------------------------------------------------------------------------------------------
##其它的一些常用设置
line1,=plt.plot(x,-x**2,label=r"$-x^2$")
line2,=plt.plot(x,np.sin(2*x**2*np.pi),label=r'$\sin(2\pi\dotx^2)$')
#设置的标记
plt.annotate(unicode("Original",encoding="utf-8"),xy=(0,0),
             xytext=(0.5,1.5),
             arrowprops=dict(facecolor='red',arrowstyle='-|>')
            )
#设置图标的标题:
plt.title("Matplotlib Learning")
#设置x和y轴的名称
plt.xlabel("x value")
plt.ylabel("result value")
#设置x轴和y轴的范围:xlim和ylim
plt.xlim(-2.0,1)
plt.ylim(-2,2)
#设置图例
plt.legend(loc='upper left')
plt.show()

2. 处理多个Axes——子图

MATLAB和pyplot都有当前图和当前axe的概念。所有的作图命令都作用在当前axe。

  • 利用plt.subplot(nrows,ncols,char_num)快速创建子图

这里有一点要注意,当选定了子图后,那么这个子图就是当前选定子图,后续所有操作都是在这个子图上,可以通过gca()获取当前的axe。

ax=plt.subplot(221)#创建2*2个子图,并选定第一个(一般选定的顺序是从左到右,从上到下)
#print type(ax),打印显示器为AxesSubplot对象
#<class 'matplotlib.axes._subplots.AxesSubplot'>
ax.plot(np.arange(0,10),np.arange(0,10))
plt.plot(np.arange(0,10),-np.arange(0,10),'k--')#两种操作等价
#------------------------------------------------
ax2=plt.subplot(222,axisbg='y')#选取第一行,第二个axe,并设置背景颜色为黄色
ax2.plot(np.arange(0,10),np.arange(0,10))
plt.plot(np.arange(0,10),-np.arange(0,10),'y-')
#设置其y轴的值不显示,x轴只显示[0,5,9]
plt.yticks([])
plt.xticks([0,5,9])
#------------------------------------------------
ax3=plt.subplot(212)#重新建立分区,并选定第二个,这时初始的分区方法被覆盖。
ax3.plot(x,func(x),label="new value")
ax3.legend(loc='best')

Python可视化学习(2):Matplotlib快速绘图基础的更多相关文章

  1. Python可视化学习(1):Matplotlib的配置

    Matplotlib是一个优秀的可视化库,它提供了丰富的接口,让Python的可视化落地显得非常容易上手.本系列是本人学习python可视化的学习笔记,主要用于监督自己的学习进度,同时也希望和相关的博 ...

  2. python实战学习之matplotlib绘图续

    学习完matplotlib绘图可以设置的属性,还需要学习一下除了折线图以外其他类型的图如直方图,条形图,散点图等,matplotlib还支持更多的图,具体细节可以参考官方文档:https://matp ...

  3. 使用matplotlib快速绘图

    matplotlib的pyplot子库提供了和matlab类似的绘图API,方便用户快速绘制2D图表.让我们先来看一个简单的例子: # -*- coding: utf-8 -*- import num ...

  4. python实战学习之matplotlib绘图

    matplotlib 是最流行的Python底层绘图库,主要做数据可视化图表 可以将数据可视化,能够更直观的呈现数据 matplotlib绘图基本要点 首先实现一个简单的绘图 # 导入pyplot f ...

  5. python爬虫学习(一):BeautifulSoup库基础及一般元素提取方法

    最近在看爬虫相关的东西,一方面是兴趣,另一方面也是借学习爬虫练习python的使用,推荐一个很好的入门教程:中国大学MOOC的<python网络爬虫与信息提取>,是由北京理工的副教授嵩天老 ...

  6. matplotlib常见绘图基础代码小结:折线图、散点图、条形图、直方图、饼图

    一.折线图 二.散点图 三.条形图 四.直方图 五.饼图 一.折线图折线图用于显示随时间或有序类别的变化趋势 from matplotlib import pyplot as plt x = rang ...

  7. Python爬虫学习==>第九章:正则表达式基础

    学习目的: 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特点字符.及这些特点字符组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑. 正式步骤 Step1 ...

  8. PyQt(Python+Qt)学习随笔:快速理解Qt 中Action是什么

    一.引言 Qt中Action这个词接触很久了,一直以来没去学习,今天终于准备学习了,查了些资料,初步总结为: Action为界面操作的抽象,应用程序可以通过菜单,工具栏按钮以及键盘快捷键来调用通用的命 ...

  9. python爬虫学习笔记(二)——基础篇之爬虫基本原理

    1.什么是爬虫? 请求网站并提取数据的自动化程序 2.爬虫基本流程 2.1发起请求 通过HTTP库向目标站点发起请求,即发起一个Request,请求可以包含额外的headers等信息,等待服务器响应: ...

随机推荐

  1. 配置apache

    1. 修改httpd.conf文件 # vi  /usr/local/apache/conf/httpd.conf 1) 设置根目录的路径 根目录是指Apache存放配置文件和日志文件的目录,配置参数 ...

  2. 读书笔记 effective c++ Item 25 实现一个不抛出异常的swap

    1. swap如此重要 Swap是一个非常有趣的函数,最初作为STL的一部分来介绍,它已然变成了异常安全编程的中流砥柱(Item 29),也是在拷贝中应对自我赋值的一种普通机制(Item 11).Sw ...

  3. VUE2.0实现购物车和地址选配功能学习第一节(来源--慕课网河畔一角)

    第一节  vue知识 vue-resource:和后台交互的一个插件,实现get.post和jsonp等功能.(替代jQuery) vue特点: 1.易用:通过创建vue实例,{{}}绑定数据十分方便 ...

  4. mfc---获取当前时间

    CTime t = CTime::GetCurrentTime(); CString strTime = t.format("%Y/&m%d" %h:%M:%S);

  5. WebStorm 自定义字体+颜色+语法高亮+导入导出用户设置

    WebStorm :是jetbrains公司旗下一款JavaScript 开发工具.被广大中国JS开发者誉为“Web前端开发神器”.“最强大的HTML5编辑器”.“最智能的JavaScript IDE ...

  6. JVM client模式和Server模式的区别

    在“你知道自己执行的是哪个jre吗?”一文中我们知道安装JDK时会安装了两套JRE:专用和公用,殊不知这两套JRE还有秘密. 专用和公用JRE的不同 不同点在于专用JRE的bin里不仅有“client ...

  7. Visual Studio 2017正式版使用一些疑问

    刚升级完2017,是从2015升上去的,总体没有什么大的问题,就是报了一些ts的类型检查的问题,最重要的就是编译速度变得好慢啊,希望尽快出来补丁修复,以前一个解决方案只要10+秒,现在要50秒,表示体 ...

  8. Java中的for each实现原理与坑

    文章转载自「开发者圆桌」一个关于开发者入门.进阶.踩坑的微信公众号 在Java中,遍历集合和数组一般有以下三种形式: for (int i = 0; i < list.size(); i++) ...

  9. WeMall微商城源码报名插件Apply的主要源码

    WeMall微信商城源码报名插件Apply,用于商城的签到系统,分享了部分比较重要的代码,供技术员学习参考 AdminController.class.php <?php namespace A ...

  10. 求m和n的最大公约数和最小公倍数

    题目:输入两个正整数m和n,求其最大公约数和最小公倍数. 做这道题时,特意去查看了一下什么是最大公约数和最小公倍数. 后来直接去看了求解的思想,相信到企业中不会要求你闭门造车,若已有先例,可以研究之后 ...