Python 之 Python与MATLAB 作图小结
来源:互联网 发布:阿里云邮箱设置 编辑:程序博客网 时间:2024/06/09 10:27
一、一般概念
图形系统就是用来实现所谓的可视化的。在学习具体的命令之前,先了解一个可视化的图形具有哪些特征,以及这些特征具有什么关系。有了一个宏观的了解之后,记住几个核心的命令,等遇到具体问题时候查询相关文档或者查看类似图形别人的代码即可。就以我们在纸上作图作为比拟:
首先,我们需要一张白纸。这张白纸,就是一个所谓的figure。我们可以给这个figure取一个名字,写在这张纸的正中间。如果这是一系列纸中的一张,可能还会给它一个标号,比如第1页、第2页。
然后,我们在这张纸上确定把图画在什么位置,即确定坐标轴(axes)这一张纸有几个坐标轴?坐标轴的刻度范围?线性的还是对数的?是方形的?双侧坐标轴的?等等。在画线区域,还可以考虑加网格。
下面,我们可以在已有的坐标中画上我们需要的功能曲线了,也就是由一个个点连成的线。连线的方式有很多选择,比如直角坐标系、极坐标、饼状图、箭头图等。对于这些点或者线,我们可以控制它的风格:比如颜色、比如宽度等等。
最后,要给图线添加一些说明文字,比如坐标轴的物理意义、图中曲线、符号的图例、这个图整体的标题、图中某些点的含义等等。
二、MATLAB的实现
以一个简单的例子,大致给出MATLAB绘图的一般方法。
t1=0:0.1:4
t2=0:0.05:4
figure()
subplot(211)
plot(t1,sin(2*pi*t1),'--g*')
title('sine function demo')
xlabel('time(s)')
ylabel('votage(mV)')
xlim([0.0,5.0])
ylim([-1.2,1.2])
grid on
subplot(212)
plot(t2,exp(-t2),':r')
hold on
plot(t2,cos(2*pi*t2),'--b')
xlabel('time')
ylabel('amplitude')
效果如图:
三、Python的实现
实现上面相同的例子。
Python用来绘图的工具包是matplotlib。翻译一段matplotlib主页上的话:“matplotlib是一个Python 2D绘图库,提供多种可跨平台的硬拷贝格式的出版质量的图形及交互环境。”、“matplotlib努力让容易的事情继续容易,让难的事情尽量容易。”
网址(http://matplotlib.sourceforge.net/gallery.html)给出了各种常见的和一些不常见的图形实例,都有源码。在使用的时候,看到自己需要的图形,找到源码,填入自己的数据以及说明文字,一个漂亮的图就产生了!另外,对于3D作图,尽管matplotlib本身不提供,但是强有力的add-ons已经加入,完全可以胜任常规3D作图。
初级用户建议使用pylab模式,pylab中包括了matplotlib.pyplot的所有绘图命令,以及numpy和matplotlib.mlab中的函数,在这个模式下,和MATLAB的绘图命令和套路几乎是完全一样的;高级用户建议使用matplotlib,可以进行更多的细节控制。
方式一:
from pylab import *
t1=arange(0.0,4.0,0.1)
t2=arange(0.0,4.0,0.05)
figure()
subplot(211)
plot(t1,sin(2*pi*t1),'--g*')
title('sine function demo')
xlabel('time(s)')
ylabel('votage(mV)')
xlim([0.0,5.0])
ylim([-1.2,1.2])
grid('on')
subplot(212)
plot(t2,exp(-t2),':r')
hold('on')
plot(t2,cos(2*pi*t2),'--b')
xlabel('time')
ylabel('amplitude')
show()
效果如图:
方式二:
import matplotlib.pyplot as plt
import numpy as np
t1=np.arange(0.0,4.0,0.1)
t2=np.arange(0.0,4.0,0.05)
fig = plt.figure()
ax1 = fig.add_subplot(211)
line1, = plt.plot(t1,np.sin(2*np.pi*t1),'--*')
plt.title('sine function demo')
plt.xlabel('time(s)')
plt.ylabel('votage(mV)')
plt.xlim([0.0,5.0])
plt.ylim([-1.2,1.2])
plt.grid('on')
##这种方式的优势和不同在以下语句体现。因为句柄的引入,让我们更加的面向对象,思路也更加清晰。代码的
##可读性也更高了。
plt.setp(line1,lw=2,c='g')
line1.set_antialiased(False)
plt.text(4,0,'$\mu=100,\\sigma=15$')
ax2=fig.add_subplot(212)
plt.plot(t2,np.exp(-t2),':r')
plt.hold('on')
plt.plot(t2,np.cos(2*np.pi*t2),'--b')
plt.xlabel('time')
plt.ylabel('amplitude')
plt.show()
效果如图:
- Python 之 Python与MATLAB 作图小结
- python与机器学习之作图
- Python 之 Python与MATLAB 矩阵操作小结
- python 之 matplotlib 作图
- Matlab作图语句小结
- Matlab作图语句小结
- python之处理excel并作图
- 《java与MATLAB混合编程》之《java调用MATLAB作图》
- python-matplotlib-作图分析
- python matplotlib作图
- 使用Python pandas作图
- 用python作图
- 使用python科学作图包matplotlib作图
- Python 之 Python与MATLAB 矩阵操作总结
- 【转】MATLAB之三维作图
- matlab与python
- Python作图-精确率与召回率间关系
- Python高级数据处理与可视化(四)---- Pandas作图
- iPhone开发入门系列1(iOS8+Swift版)天天打靶APP学习07-09
- window平台单进程多线程服务器通信
- Java心得7
- 签名书项目
- KMP算法中next数组的手工计算方法
- Python 之 Python与MATLAB 作图小结
- 发布测试IPA-01(打包证书)
- DP - hdu5290 Bombing plan
- poj 1251 Jungle Roads 解题报告(kruskal+prim)
- leetcode 093 —— Restore IP Addresses
- ubuntu install wiznote
- 字符串和整数之间的相互转化
- C#.net下填充jQuery.datatable犯的二
- 棋牌服务器,首选佛山高防,大带宽,高防御,稳定顺畅