日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

發布時間:2025/3/15 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 科学计算:Python VS. MATLAB(4)----图形系统简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

科學計算: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繪圖庫,提供多種可跨平臺的硬拷貝格式的出版質量的圖形及交互環境?!薄ⅰ癿atplotlib努力讓容易的事情繼續容易,讓難的事情盡量容易。”

網址(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)----图形系统简介的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。