點擊上方「科研充電寶」,可以添加關注。
畫圖是理工科工作者的必備技能,以前3M君給大家總結過畫圖常用軟體:你一定要知道的十款主流畫圖軟體,淡定的工作從畫出高品格圖片開始
也許你已能用它們熟練地畫出美美的tif,jpg,bmp或者emf等格式的圖片。
確實,以此用於發論文或寫結題報告都應該已經夠用了。
但是別忘了:無論畢業以後是繼續學術、還是去企業上班,都可能會遇到各種需要做報告的情況。
比如畢業答辯、比如部門總結匯報、比如招標投標競爭……
這時候,如果能在做報告的PPT裡面插入這樣一副圖:(各參數隨時間的演化)
或者這樣的動圖:(隨時間的增加,兩根曲線或多根曲線的交點變化情況)
或者這樣:
是不是瞬間感覺自己的報告高大上起來?
沒錯,看到你秀出來會動的曲線圖之後,慧眼識才的領導眼前一亮、直接嘴動點讚、稱許滿滿;中意了很久的男神女神,投來了崇拜和火辣的眼神;遠處曾經囂張的競爭對手一臉的失落,自嘆技不如人在牆角默默流淚。
要的就是這種碾壓的效果。(ps, 以上情景純屬歪歪,若無雷同,概不負責…)
效果好是好,可問題是:
(1) 用什麼方法能畫出這樣的圖?
(2) 畫這種圖會不會很麻煩?
麻不麻煩取決於你用什麼樣的工具。
比如,如果打算採用Matlab,雖然用它自帶的諸如movie2avi等函數也可以實現,但是效果並不見得很好。
再比如,如果打算用Flash做動畫,那麼就是高射炮打蚊子。
這裡,隆重推薦今天的主角——gnuplot。
1. gnuplot的基本概念
把gnuplot看成gunplot的童鞋,你閱讀速度有點略快啊。也許你最近有點焦慮、煩悶?別著急,一切都會好起來的。
gnuplot畫出來的靜態圖長這樣:
gnuplot是一個免費軟體,可以在window,linux,mac等系統下使用。
它使用交互式介面,可以繪製數學函數2D或者3D圖形,也可以從純文字檔讀入數據、繪製統計圖表等等,還包含數學計算、擬合等功能。
對於用慣了滑鼠的童鞋而已,這裡可能有個壞消息:gnuplot是基於命令行的交互式繪圖軟體。
打開一個終端,輸入gnuplot,隨著程序啟動,會出現下面的信息:(如果是在Windows 電腦上,雙擊gnuplot.exe 後會自動打開一個命令行窗口)
不過不用太慌張,零基礎的童鞋對照教程,大概只用不到半天的時間就能學會(教程在後面會提到)。
2. 簡單的例子
採用gnuplot畫動態曲線圖的原理是:多次畫圖並把所有圖片壓縮成一個gif動畫。具體可使用reread命令或者do for命令。
下面是一些動圖的例子和代碼,其它簡單的曲線可以此類推:
(1) 隨時間衰減的分布曲線圖
set term gif animateoptimize delay 2 size 480,360
set output 'movie.gif'
do for [i = 0:400 ] {
t=i*0.02
plot sqrt(1/(1+t*t))*exp(-(x-t)**2/(1+t*t)) lw 2
}
set out
set terminal wxt enhanced
(2) 等高線及其二維投影隨時間變化圖
#set term gif animate optimize delay 10 size 480,480
#set output 'movie.gif'
set pm3d at b
set xr[-5:10]
set yr[-5:10]
set zr[0:1]
set cbr[0:1]
set isosamples 50
dofor [i = 0:50 ] {
t=i*0.05
splot sqrt(1/(1+t*t))*exp(-(x-t)**2/(1+t*t))*sqrt(1/(1+t*t))*exp(-(y-2*t)**2/(1+t*t))
}
#set out
#set terminal wxt enhanced
(3) 小行星軌跡圖
#set term gif animate optimizedelay 5 size 960,720
#set output 'movie.gif'
set param
set size ratio -1
set samples 10000
e = 1
omega=0.1
set tr[1:600]
do for [i = 1:200 ] {
plot e*cos(omega*t)/sqrt(t), sin(omega*t)/sqrt(t)
set label 1 pointpt 7 ps 3 at e*cos(omega*i*3)/sqrt(i*3),sin(omega*i*3)/sqrt(i*3)
}
#set out
#set terminal wxt enhanced
(4) 兩顆行星互相纏繞,最後墜毀在一起
set param
set samples 10000
set tr[0.01:1]
imax=100
tmax=20e0*pi
ht=tmax/real(imax)
#set term gif animate optimizedelay 6 size 600,600
#set output 'orbit.gif'
do for [i=1:imax] {
th(t,i)=t*real(i)*ht
plot 10e0*sin(th(t,i))/th(t,i),10e0*cos(th(t,i))/th(t,i) , \
10e0*sin(th(t,i)-pi)/th(t,i),10e0*cos(th(t,i)-pi)/th(t,i) lt 1 lc 2
}
#set out
#set terminal wxt enhanced
3. 複雜的例子
除了上面正經的動態曲線圖,gnuplot還可以用來幹一些不正經的事情。比如:
(1) 巫婆帶著烏鴉海上飛
(2) 超級馬裡奧從洞裡鑽出來
(3) 電磁炮
(4) 時鐘
(5) 騎摩託車上下坡
(6) 跳舞的星星
看到這裡,是不是覺得這小軟體還有那麼點意思?教程、軟體、以及例子,可在公眾號對話框界面回復gnuplot獲取。
畫動態曲線圖的技術,你值得擁有。
(END)
1論文寫作
論文查重:防止被查重系統誤傷的幾個注意事項
研究生第一篇學術論文常犯問題總結
寫論文和報告容易犯的低級錯誤
論文寫作應該注意的八個細節
SCI投稿全過程信件模板
發表SCI論文有哪些實用工具?
2實用妙招
編輯公式效率太低?來看MathType的重要技巧
如何把圖片格式的Pdf轉化為可編輯的Word?
如何使用Matlab將其畫出的圖片,直接生成PPT?
21個最出名最好用的免費電子書下載網站
搜不到專業的資料、文獻和數據?用這些網站試試
Google學術網址打不開如何愉快地科研?
3作圖技巧
你一定要知道的十款主流畫圖軟體
如何把別人論文中的曲線圖,自動轉化為數據點?
高級版:如何從別人論文的曲線圖中獲取數據點?
如何在橫縱坐標、標題上顯示公式或特殊符號?
如何自動裁剪掉圖像多餘的白邊和坐標系邊框?
Matlab導出高清圖片的正確方法
4編程技巧
最常用的10個Matlab快捷鍵
最值得學習的Matlab參考書有哪些?
如何只用一個小時實現Matlab的快速入門?
媲美Matlab的神器——Python語言的十本入門經典
Matlab數學建模算法全收錄,數學建模比賽必備
Matlab中提高m文件執行效率的小技巧
5技術宅
買西瓜的高級玩法,用好你的智慧型手機
家裡沒人怎麼防火防盜?裝上這段自動看家程序
半夜看小說傷眼睛怎麼辦?
放學快走,你的電腦在實驗室自己喊啪嗒!
如何利用普通計算器求解高次方程的解
手機還能幹這事?以後再也不擔心忘帶雷射筆了
回復「熱門」查看更多信息
3M君,清華博士一枚,不定時po一些科研乾貨、論文寫作中的經驗教訓、作圖技巧、技術宅和好玩的東西。喜歡這篇推送的話,歡迎點讚、評論和轉發哦~