首页 技术 正文
技术 2022年11月16日
0 收藏 750 点赞 3,606 浏览 2681 个字

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

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

#-*- coding:utf-8 -*-import matplotlib.pyplot as pltimport numpy as npimport 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))#只返回第一个对象

Python可视化学习(2):Matplotlib快速绘图基础

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

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

    Python可视化学习(2):Matplotlib快速绘图基础

设置曲线的属性:

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

Python可视化学习(2):Matplotlib快速绘图基础

#通过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('-')

Python可视化学习(2):Matplotlib快速绘图基础

#通过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','-.')#采用变量形式,这时候属性必须用字符串形式成对表示(数值除外)

Python可视化学习(2):Matplotlib快速绘图基础

###-----------------------------------------------------------------------------------------------------------##其它的一些常用设置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和ylimplt.xlim(-2.0,1)plt.ylim(-2,2)#设置图例plt.legend(loc='upper left')plt.show()

Python可视化学习(2):Matplotlib快速绘图基础

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开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,031
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,520
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,368
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,148
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,781
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,860