科学计算:Python VS. MATLAB(4)----图形系统简介

一、一般概念

图形系统就是用来实现所谓的可视化的。在学习具体的命令之前,先了解一个可视化的图形具有哪些特征,以及这些特征具有什么关系。有了一个宏观的了解之后,记住几个核心的命令,等遇到具体问题时候查询相关文档或者查看类似图形别人的代码即可。就以我们在纸上作图作为比拟:

首先,我们需要一张白纸。这张白纸,就是一个所谓的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)')    %XY轴的文字
xlim([0.0,5.0])
ylim([-1.2,1.2])    %XY轴的区间范围
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 *    #引入兼容MATLAB包:pylab

t1=arange(0.0,4.0,0.1)
t2=arange(0.0,4.0,0.05)    #准备一些数据,注意和MATLAB的不同

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')    #控制网格显示和grid(True)效果一样。不带参数的grid()起到toggle的作用。

subplot(212)
plot(t2,exp(-t2),':r')
hold('on')    #前一条线保持。用法和grid类似。
plot(t2,cos(2*pi*t2),'--b')

xlabel('time')
ylabel('amplitude')
show()    #这是和MATLAB很大的不同,这个命令用完,图形才会出来。

效果如图:

方式二:

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()    #准备好这张纸,并把句柄传给fig
ax1 = fig.add_subplot(211)    #使用句柄fig添加一个子图
line1, = plt.plot(t1,np.sin(2*np.pi*t1),'--*')   #绘图,将句柄返给line1 
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')    #通过setp函数,设置句柄为line1的线的属性,c是color的简写
line1.set_antialiased(False)    #通过line1句柄的set_*属性设置line1的属性
plt.text(4,0,'$\mu=100,\\sigma=15$')    #添加text,注意,它能接受LaTeX哟!

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()

效果如图:

================update 20121229=================

关于python科学计算,隆重推荐sage math,sage的特点和用法,在本博客较新博文中有介绍

科学计算:Python VS. MATLAB(4)----图形系统简介相关推荐

  1. matlab科学计算及分析,matlab科学计算

    spContent=当前,科学计算已经成为科学研究.技术创新的重要方法与手段,而作为实现工具的科学计算软件无疑具有至关重要的作用.MATLAB为众多领域的计算问题提供了全面的解决方案,代表了当今国际科 ...

  2. qtableview与sqlite使用显示科学计算_使用MATLAB Profiler提升程序运行的效率

    很多同学在研究和学习的过程中都会经常使用 MATLAB.很多时候当编好一个程序之后,我们发现程序运行的效率达不到预想的要求.盲目的去找程序的缺陷往往既花时间也没有什么太大效果.这里我想告诉大家 MAT ...

  3. python科学计算基础教程pdf下载-Python科学计算基础教程_PDF电子书

    因资源下载地址容易失效,请加微信号359049049直接领取,直接发最新下载地址. 前言 ======================================================= ...

  4. matlab R2011a汉化包,《科学计算语言》(Mathworks Matlab)R2011a Win/UNIX[光盘镜像]

    中文名: 科学计算语言 英文名: Mathworks Matlab 资源格式: 光盘镜像 版本: R2011a Win/UNIX 发行时间: 2011年 制作发行: The MathWorks, In ...

  5. python读取matlab数据_两分钟搞定Python读取matlab的.mat数据

    Matlab是学术界非常受欢迎的科学计算平台,matlab提供强大的数据计算以及仿真功能.在Matlab中数据集通常保存为.mat格式.那么如果我们想要在Python中加载.mat数据应该怎么办呢?所 ...

  6. matlab读取.mb15格式数据,两分钟搞定Python读取matlab的.mat数据

    Matlab是学术界非常受欢迎的科学计算平台,matlab提供强大的数据计算以及仿真功能.在Matlab中数据集通常保存为.mat格式.那么如果我们想要在Python中加载.mat数据应该怎么办呢?所 ...

  7. 全面对比 MATLAB、Julia、Python,谁在科学计算中更胜一筹?

    数百种编程语言,各有优劣,各自也都有自己最为适用的场景.那么就科学计算领域而言,主流的 MATLAB.Julia.Python 会有哪些最为独特的优势呢?又存在哪些让开发者无力的缺陷?在本文中,我们将 ...

  8. 科学计算:Python VS. MATLAB (1)----给我一个理由先

    科学计算:Python VS. MATLAB (1)----给我一个理由先         MATLAB 是一种用于算法开发.数据可视化.数据分析以及数值计算的高级技术计算语言和交互式环境.使用 MA ...

  9. 科学计算:Python VS. MATLAB(3)----线性代数基础

    科学计算:Python VS. MATLAB(3)----线性代数基础 按:在介绍工具之前先对理论基础进行必要的回顾是很必要的.没有理论的基础,讲再多的应用都是空中楼阁.本文主要设涉及线性代数和矩阵论 ...

最新文章

  1. 联邦学习,为何而生?
  2. H5 canvas的 width、height 与style中宽高的区别
  3. 博客园Markdown新建笔记
  4. python绘制灰度图片直方图-用python简单处理图片(5):图像直方图
  5. C语言经典例82-八进制转换为十进制
  6. matlab中 三种方法计算 Ax b,在MATLAB中,方程Ax=B的解可以用哪个命令求得? matlab 求助 解方程组...
  7. cron 每年执行一次_循环执行定时任务crontab
  8. JAVA标识符中含小数点可以吗_数值类型小数点后是否可以接零问题
  9. 一步一步写算法(之字符串查找 中篇)
  10. 论文|Airbnb Embedding的实践和思考
  11. 杭电OJ 敌兵布阵 树状数组
  12. 惊!Python能够检测动态的物体颜色!
  13. 苹果测试集了成语音识别和人脸识别的智能家居?
  14. C++数值类型极限值的获取
  15. 2.会计基础--(复式记账、会计凭证与账簿)
  16. Revi开发 - 碰撞检测
  17. Chest X-Ray Images (Pneumonia)(胸部X光片(肺炎)相关数据集)
  18. 作为程序员中的绅士,这10个技巧会让你的代码更加优雅
  19. 头条员工工资表曝光,牛逼的人注定会牛逼
  20. HTML无害化和Sanitize模块

热门文章

  1. 【转】SVN 与 GIT 详细对比
  2. Django入门项目实践(中)
  3. 12.源码阅读(app启动流程-android api 26)
  4. Java动态绑定机制的内幕
  5. Kafka Design
  6. PLSQL_基础系列11_递归和层次查询CONNECT BY(案例)
  7. oracle的imp和exp
  8. OSPF路由协议解释及特性介绍
  9. [公告]网站恢复正常运行
  10. hdu 4521(线段树优化dp)