我們在做數據繪圖或函數圖像時經常需要使用對數坐標系。尤其是數據的范圍跨越很多個數量級時,通常的線性坐標系下無法表現出數據特征。
?Scilab?中Plot函數無法畫出對數坐標。需要使用?plot2d?函數。
?plot2d?函數的基本用法如下:
?
plot2d([logflag,][x,],y[,style[,strf[,leg[,rect[,nax]]]]])
plot2d([logflag,][x,],y,<opt_args>)
?
下面是一個簡單的例子:
~~~
iter = linspace(0,10,11);
err = 10.^(-iter);
plot2d("nl", iter, err, style=2);
set(gca(),"grid",[1 1]);
~~~

這個例子如果在普通的坐標系下看,是這個樣子的:
~~~
plot(iter,err);
set(gca(),"grid",[1 1]);
~~~

由于數據很快就很接近0了,在圖中很難看出后面的趨勢。
下面來詳細的講解一下plot2d函數。
plot2d("nl",?iter,?err,?style=2);
?“nl”?表示,橫坐標為正常的模式(normal),縱坐標為對數(log).
Style?=?2?表示的是曲線的顏色。2?表示的是colormap?中的第二項,也就是藍色。
如果是負數,則表示用不同的線型。如果既要設置曲線的顏色,又要設置線型,那么。。。暫時還沒搞定。
下面再給一個例子,通過rect參數控制xy的范圍:
~~~
x=[0:0.1:2*%pi]';
plot2d(x,[sin(x) sin(2*x) sin(3*x)],rect=[0,0,6,0.5]);
~~~

有點跑題了,接著介紹對數坐標系繪圖。下面再給一個例子:
~~~
ind = linspace(0,6,7);
iter = 10.^ind;
err1 = 10.^(-ind);
err2 = (10.^(-ind)).^2;
xset("font size", 4);
plot2d("ll", iter, err1, style=2);
plot2d("ll", iter, err2, style=3);
title("Loglog","fontsize", 4);
xlabel("Iterations","fontsize", 4);
ylabel("Error","fontsize", 4);
set(gca(),"grid",[5 5]);
legend(['error1';'error2'],"in_lower_left");
~~~

這個圖是雙對數坐標,同時還調整了圖上的文字。需要注意的是:
xset("font?size",?4);??
語句一定要在
legend(['error1';'error2'],"in_lower_left");
語句之前調用,否則得到的圖形的legend 的字號會有問題,下面是個實驗,先執行如下語句:
~~~
ind = linspace(0,6,7);
iter = 10.^ind;
err1 = 10.^(-ind);
err2 = (10.^(-ind)).^2;
plot2d("ll", iter, err1, style=2);
plot2d("ll", iter, err2, style=3);
title("Loglog","fontsize", 4);
xlabel("Iterations","fontsize", 4);
ylabel("Error","fontsize", 4);
set(gca(),"grid",[5 5]);
legend(['error1';'error2'],"in_lower_left");
~~~

這個圖形是和我們的預期一樣的。標題和Label的字號變大了,刻度和Legend的字號還是原來的大小。
接著執行:
~~~
xset("font size", 4);
~~~

結果是刻度上的字號更新為正確的大小了,可legend?的字號沒變。看來這個是?scilab?的一個bug。
所以我們需要先設置字號,然后調用legend 函數。
- 前言
- gnuplot 中的數據平滑
- 利用 Maxima 求解常微分方程
- Maxima 的繪圖功能 1
- Maxima 的繪圖功能 2
- Maxima 的繪圖功能 3
- Maxima 矩陣及矢量運算 1
- Maxima 矩陣及矢量運算 3
- Maxima 矩陣及矢量運算 4
- maxima 學習筆記(coeff 函數的應用)
- maxima 代數表達式變換
- maxima 學習筆記(基本微積分)
- maxima 代數方程求解
- Maxima 中的復數運算
- Maxima 的三角函數化簡功能
- Maxima 的基本微積分操作
- 利用 gnuplot 繪制時間序列圖
- gnuplot 入門教程 1
- gnuplot 入門教程 2
- gnuplot 入門教程 3
- gnuplot 入門教程 4
- gnuplot 讀取逗號分隔的數據文件
- scilab 讀取處理 wav 文件
- scilab 讀取處理 wav 文件 (2)
- Scilab 處理聲音數據(補充)
- 利用 SCILAB 設計 FIR 濾波器(窗函數法)
- 利用 SCILAB 設計 FIR 濾波器(Minimax法)
- 利用 SCILAB 設計 iir 濾波器設計(模擬濾波器雙線性變換法)
- Scilab 的繪圖函數(1)
- Scilab 的繪圖函數(2)
- Scilab 的繪圖函數(3)
- Scilab 的繪圖函數(4)