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. Excel与XML相互转换 - C# 简单实现方案

    Excel与XML相互转换 - C# 简单实现方案 在日常工作中,我需要将数据存储在Excel中进行数据分析和处理,然后再将数据转换为XML格式进行跨平台的数据交换.网上搜索Excel转换为XML的实 ...

  2. Linux SVN安装部署

    系统:centos6.3 svn: subversion-1.6.1 apache: httpd-2.2.29 //创建svn路径 [root@localhost /]# mkdir svn [roo ...

  3. spring源码浅析——IOC

    =========================================== 原文链接: spring源码浅析--IOC   转载请注明出处! ======================= ...

  4. Servlet 学习简介

    一.Servlet简介 Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的 ...

  5. 连接池 DBCP c3p0以及分页的案例

    1. 连接池 思考: 程序中连接如何管理? 连接资源宝贵:需要对连接管理 连接: a) 操作数据库,创建连接 b) 操作结束,  关闭! 分析: 涉及频繁的连接的打开.关闭,影响程序的运行效率! 连接 ...

  6. 用javascript动态改变网页文字大小

    <script>function setFontSize(size){document.getElementById('bottom').style.fontsize=size+'pt'; ...

  7. postman定义公共函数

    对于postman定义公共函数,相信很多小伙伴并不是很了解,下面给大家带来了一点福利,一起来看看吧.1.判断是否超时(assertNotTimeout)

  8. cuda编程学习4——Julia

    书上的例子编译会有错误,修改一下行即可. __device__ cuComplex(float a,float b):r(a),i(b){} /* ========================== ...

  9. fastlane安装流程和fastlane match同步证书和PP文件方法

    分步指南 安装fastlane:  ① Make sure you have the latest version of the Xcode command line tools installed: ...

  10. Windows 10 Creaters Update 新功能——画中画模式和窗口高斯模糊

    在Windows 10 Creaters Update中,可以给窗口设置高斯模糊了,只要几行代码! <Grid Loaded="Grid_Loaded"> <Gr ...