Python可视化学习(2):Matplotlib快速绘图基础
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快速绘图基础的更多相关文章
- Python可视化学习(1):Matplotlib的配置
Matplotlib是一个优秀的可视化库,它提供了丰富的接口,让Python的可视化落地显得非常容易上手.本系列是本人学习python可视化的学习笔记,主要用于监督自己的学习进度,同时也希望和相关的博 ...
- python实战学习之matplotlib绘图续
学习完matplotlib绘图可以设置的属性,还需要学习一下除了折线图以外其他类型的图如直方图,条形图,散点图等,matplotlib还支持更多的图,具体细节可以参考官方文档:https://matp ...
- 使用matplotlib快速绘图
matplotlib的pyplot子库提供了和matlab类似的绘图API,方便用户快速绘制2D图表.让我们先来看一个简单的例子: # -*- coding: utf-8 -*- import num ...
- python实战学习之matplotlib绘图
matplotlib 是最流行的Python底层绘图库,主要做数据可视化图表 可以将数据可视化,能够更直观的呈现数据 matplotlib绘图基本要点 首先实现一个简单的绘图 # 导入pyplot f ...
- python爬虫学习(一):BeautifulSoup库基础及一般元素提取方法
最近在看爬虫相关的东西,一方面是兴趣,另一方面也是借学习爬虫练习python的使用,推荐一个很好的入门教程:中国大学MOOC的<python网络爬虫与信息提取>,是由北京理工的副教授嵩天老 ...
- matplotlib常见绘图基础代码小结:折线图、散点图、条形图、直方图、饼图
一.折线图 二.散点图 三.条形图 四.直方图 五.饼图 一.折线图折线图用于显示随时间或有序类别的变化趋势 from matplotlib import pyplot as plt x = rang ...
- Python爬虫学习==>第九章:正则表达式基础
学习目的: 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特点字符.及这些特点字符组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑. 正式步骤 Step1 ...
- PyQt(Python+Qt)学习随笔:快速理解Qt 中Action是什么
一.引言 Qt中Action这个词接触很久了,一直以来没去学习,今天终于准备学习了,查了些资料,初步总结为: Action为界面操作的抽象,应用程序可以通过菜单,工具栏按钮以及键盘快捷键来调用通用的命 ...
- python爬虫学习笔记(二)——基础篇之爬虫基本原理
1.什么是爬虫? 请求网站并提取数据的自动化程序 2.爬虫基本流程 2.1发起请求 通过HTTP库向目标站点发起请求,即发起一个Request,请求可以包含额外的headers等信息,等待服务器响应: ...
随机推荐
- Java代理(静态/动态 JDK,cglib)
Java的代理模式是应用非常广泛的设计模式之一,也叫作委托模式,其目的就是为其他的对象提供一个代理以控制对某个对象的访问和使用,代理类负责为委托类预处理消息,过滤消息并转发消息,以及对消息执行后续处理 ...
- 做了个新的UWP类库 Sharp2D
C#开发UWP的时候如果要实现高斯模糊效果的话,最好的选择似乎是微软的Win2D 但是Win2D太过庞大了,仅仅是庞大其实也没啥问题,毕竟net core就很庞大,但Win2d是一个Winmd组件 w ...
- Spring+SpringMVC+MyBatis+easyUI整合基础篇(七)JDBC url的连接参数
在java程序与数据库连接的编程中,mysql jdbc url格式如下: jdbc:mysql://[host:port],[host:port].../[database][?参数名1][=参数值 ...
- win8系统不小心禁用了管理员权限怎么解决
第一步:查看系统有没有其他管理员账户 按win+x键,然后选择命令提示符 点击命令提示符打开窗口,输入net localgroup Administrators命令,然后回车 如上图,查看窗口中的&q ...
- SQL Server-聚焦NOLOCK、UPDLOCK、HOLDLOCK、READPAST你弄懂多少?(三十四)
前言 时间流逝比较快,博主也在快马加鞭学习SQL Server,下班回来再晚也不忘记更新下博客,时间挤挤总会有的,现在的努力求的是未来所谓的安稳,每学一门为的是深度而不是广度,求的是知识自成体系而不是 ...
- hadoop2.7.2完全分布式环境搭建
1.先使用groupadd hadoop 建立hadoop用户组 2.新建用户,useradd -d /usr/hadoop -g hadoop -m hadoop (新建用户hadoop指定用户 ...
- 中软卓越IT培训:给IT程序员的18个忠告
1 .想清楚,写清楚,说清楚,才是真正的清楚! 2 .多花点时间沟通清楚需求,才能把握正确方向! 3 .修复需求错误的成本是代码错误的几十倍! 4 .程序员最大的坏习惯就是:急于动手写代码! 5 .提 ...
- Session分布式共享 = Session + Redis + Nginx
一.Session 1.Session 介绍 我相信,搞Web开发的对Session一定再熟悉不过了,所以我就简单的介绍一下. Session:在计算机中,尤其是在网络应用中,称为"会话控制 ...
- lua和c的亲密接触
介绍 lua和c的亲密接触,靠的是一个虚拟栈.lua通过这个虚拟栈来实现和c之间值的互传.栈上的每一个元素是一个lua值(nil,number,string...). 当lua调用c函数的时候,这个函 ...
- Laptop Ubuntu16.04/14.04 安装Nvidia显卡驱动
笔记本型号 机械革命(MECHREVO)深海泰坦X6Ti-S(黑曜金)15.6英寸 CPU型号 i5-7300HQ 内存 8G 硬盘容量 128SSD+1T机械硬盘 显卡 GeForce GTX 10 ...