日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

台湾国立大学郭彦甫Matlab教程笔记(11) advanced 2D plots 上

發(fā)布時間:2025/4/5 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 台湾国立大学郭彦甫Matlab教程笔记(11) advanced 2D plots 上 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

臺灣國立大學(xué)郭彥甫Matlab教程筆記(11)
today:
1.advanced 2D plots
2.color space色彩使用
3.3D plots

圖形概覽,做研究的時候需要選擇圖形

special plots特殊繪圖

funtions1:

loglog: graph with logarithmic scales for both axes兩個坐標軸都是對數(shù)
semilogx:graph with a logarithmic scale for the x-axis and a linear scale for the y-axis 一個坐標x坐標是對數(shù)
semilogy:graph with a logarithmic scale for the y-axis and a linear scale for the x-axis一個坐標y坐標是對數(shù)

plotyy:gragh with y-tick labels on the left and right side兩側(cè)y軸

functions2:
hist: histogram plot直方圖
bar: bar graph柱狀圖
pie:pie chart餅狀圖
polar :polar coordinate plot極坐標繪圖

對數(shù)部分:

舉例子:

x=logspace(-1,1,100);%x從10的-1次方到10的1次方,其中有100個數(shù) y=x.^2;%y也是100個數(shù) subplot(2,2,1);%第一個圖 plot(x,y); title('plot'); subplot(2,2,2);%第二個圖 semilogx(x,y);%x取對數(shù)就變成 -1 、0、1 title('semilogx'); subplot(2,2,3);%第三個圖 semilogy(x,y);%y軸取對數(shù) title('semilogy'); subplot(2,2,4);%第四個圖 loglog(x,y);%兩個軸都取對數(shù) title('loglog');

我們來看一下 四幅圖的對比效果

圖一:坐標軸正常
圖二:x軸取對數(shù),y軸正常linear,x軸變成-1、0、1
圖三:y軸取對數(shù),x軸正常,y軸變成-1、0、1
圖四:兩個軸同時取對數(shù),變成直線

現(xiàn)在加一句代碼:

set(gca,'xgrid','on');

看一下效果:會出現(xiàn)網(wǎng)格,可以看出來網(wǎng)格不均勻,可以體會取對數(shù)的效果。

下一頁:

plotyy()函數(shù)

有兩個y軸,可以畫在同一張圖上
看一個例子
這個方程如下

我們想象一下這個方程圖形大概長什么樣子

使用plotyy()函數(shù):

[AX,H1,H2]=plotyy(x,y1,x,y2);

繪制兩個函數(shù)y1和y2,傳出來三個句柄handle:AX是坐標軸X,axis;H1是第一條曲線的handle,H2是第二條曲線的handle
其中,最主要的是AX這個handle,主要靠這個handle來設(shè)置兩側(cè)的y軸顯示

set(get(AX(1),'Ylabel'),'string','Left Y-axis'); set(get(AX(2),'Ylabel'),'string','Right Y-axis');

獲取左邊的y軸,使用get(AX(1),‘Ylabel’) ,同理,獲取右邊的軸,使用get(AX(2),‘Ylabel’);

畫圖總的源代碼:

x=0:0.01:20; y1=200*exp(-0.05*x).*sin(x); y2=0.8*exp(-0.5*x).*sin(10*x); [AX,H1,H2]=plotyy(x,y1,x,y2);%獲取句柄 set(get(AX(1),'ylabel'),'string','left y-axis');%設(shè)置左邊y軸,名稱是‘left y-axis’ set(get(AX(2),'ylabel'),'string','right y-axis');%設(shè)置右邊y軸 title('labeling plotyy'); set(H1,'linestyle','--');%設(shè)置畫線的風(fēng)格 set(H2,'linestyle',':');

本代碼運行結(jié)果:
和之前推算的結(jié)果形狀差不多

統(tǒng)計的圖形

histogram分布圖,柱形統(tǒng)計圖

功能:看整體分布的情況

hist(y,10);怎么解釋,hist()里面有兩個argument參數(shù),第一個y要繪制的變量,第二個參數(shù)是 柱形的個數(shù)。10表示分布圖中有10個柱形長條。
我們來產(chǎn)生一些data來看分布長什么樣子
例程:

y=randn(1,1000); subplot(2,1,1); hist(y,10);%有10個長矩形 title('Bins = 10'); subplot(2,1,2); hist(y,50);%有50個長矩形 title('Bins = 50');

我們來看一下 直方圖的效果圖

Bar charts柱狀圖

看個別的情況
x=[1 2 5 4 8];%每一個長條的高度
y=[x;1:5];%y是一個matrix ,會分成兩組bar ,如第二個圖
x是一個向量,bar(x)會產(chǎn)生一個bar
y是一個兩行的矩陣,bar(y)會產(chǎn)生兩個bar
bar3(y),這個是繪制三維的圖形
例程:

x=[1 2 5 4 8];%每一個長條的高度y=[x;1:5];%y是一個matrix ,會分成兩組bar ,如第二個圖 subplot(1,3,1); bar(x); title("a bargraph of vector x"); subplot(1,3,2);bar(y); title('a bargraph of vector y'); subplot(1,3,3);bar3(y); title('a 3D bargraph');

看一下整體的運行效果:

下面是
stacked and horizontal bar charts

壓棧和水平柱狀圖

stacked壓棧:每一個塊的高度表示每一個的大小
指令bar(y,‘stacked’); 后面用單引號里面是stacked ,就是這種格式

horizontal 給柱狀圖變成水平的
指令是barh() bar 后面加一個 horizontal 的首字母
例程代碼:

x=[1 2 5 4 8]; y=[x;1:5]; subplot(1,2,1); bar(y,'stacked');%堆棧式的bar title("stacked"); subplot(1,2,2); barh(y);%水平式的bar title('horizontal');

我們來看一下這個例程的運行結(jié)果:

作業(yè)題:

題目:把水平的柱狀圖變成堆棧式的柱狀圖

我的練習(xí)代碼:

barh(y,'stacked');

練習(xí)結(jié)果:

Pie Charts餅狀圖

composition chart 組成圖,看各個部分的比例
函數(shù)用法:pie(a),a是一個向量
pie(a,[0 0 0 1])第二個參數(shù)是一個vector ,如果哪個位置是1,則表示pie chart 圖哪個扇形會裂開
pie3(a)三維的餅狀圖

看例子
a=[10 5 20 30];四個部分的數(shù)據(jù)給出了,求各個部分占比多少

答案:

代碼:

a=[10 5 20 30]; subplot(1,3,1);pie(a); subplot(1,3,2);pie(a,[0,0,0,1]); subplot(1,3,3);pie3(a,[0,0,0,1]);

作業(yè):

題目:裂開餅狀圖所有的部分
我的練習(xí)
我的代碼:

pie(a,[1,1,1,1]);

運行結(jié)果:

下面是

Polar Chart極坐標圖

用角度和半徑來畫圖 (theta 和 r)
polar chart長這個樣子

五邊形怎么畫?我們要找角度theta和半徑r
五邊形是360°分成了五等分,可以用linspace()函數(shù)來幫忙,它可以返回增加的角度,也就是五等分的角度。 linspace(0,2pi,6);這里寫6的原因是 6個數(shù),中間間隔是5個。所以角度 theta=linspace(0,2pi,6); 半徑r取1,r=ones(1,length(theta));

我們現(xiàn)在要繪制如下四張圖:

例程代碼:

x=1:100;theta =x/10; r=log10(x); subplot(1,4,1);polar(theta,r); theta=linspace(0,2*pi);r=cos(4*theta); subplot(1,4,2);polar(theta,r); theta=linspace(0,2*pi,6);r=ones(1,length(theta)); subplot(1,4,3);polar(theta,r); theta=linspace(0,2*pi); r=1-sin(theta); subplot(1,4,4);polar(theta,r);

筆者計算機跑出來的效果:

作業(yè)題:

題目:繪制六邊形
我的練習(xí):
思路:找到theta 和r 。六邊形 被分成六個部分,同樣可以用linspace()函數(shù)
代碼:

theta=linspace(0,2*pi,7); r=ones(1,length(theta)); polar(theta,r);

練習(xí)結(jié)果:

stairs and stem charts階梯圖和火柴梗圖

stairs畫圖是畫階梯狀的圖
stem畫圖是豎線圖

下面這個程式是繪制sin()函數(shù),使用stairs()函數(shù)和stem()函數(shù)
例程:

x=linspace(0,4*pi,40); y=sin(x); subplot(1,2,1); stairs(y); subplot(1,2,2); stem(y);

現(xiàn)在再來注記一下 linspace 不是 line space 的縮寫,是linearly space 線性空間的縮寫,這樣就不會記錯,寫錯了。linspace是線性空間的生成

運行的結(jié)果:

作業(yè):

題目:繪制函數(shù)f(t),然后取樣
我的練習(xí):
分析:要求5HZ取樣,根據(jù)時間和頻率的關(guān)系,5hz對應(yīng)的是0.2s,然后根據(jù)上圖要求,時間從0到10秒,所以需要10/0.2=50個采樣
我的代碼:

t=linspace(0,10,50); f=sin(pi/4*t.*t); stem(f);

運行結(jié)果:

Boxplot and Error Bar

在統(tǒng)計中常用
boxplot(x) creates a box plot of the data in x. If x is a vector, boxplot plots one box. If x is a matrix, boxplot plots one box for each column of x.

執(zhí)行一個例程

load carsmall boxplot(MPG,Origin);

查看一下效果:

error bar 描繪出誤差
做研究的時候可能需要指出數(shù)據(jù)的誤差范圍
e=std(y)*ones(size(x));這里用的是標準差來算的長度
執(zhí)行一個例程:

x=0:pi/10:2*pi; y=sin(x); e=std(y)*ones(size(x)); errorbar(x,y,e);%e指的是畫出線的長度

執(zhí)行程序的結(jié)果:

【總結(jié)】
本文記錄了advanced 2D plots一部分
funtions1:

loglog: graph with logarithmic scales for both axes兩個坐標軸都是對數(shù)
semilogx:graph with a logarithmic scale for the x-axis and a linear scale for the y-axis 一個坐標x坐標是對數(shù)
semilogy:graph with a logarithmic scale for the y-axis and a linear scale for the x-axis一個坐標y坐標是對數(shù)

plotyy:gragh with y-tick labels on the left and right side兩側(cè)y軸

functions2:
hist: histogram plot直方圖
bar: bar graph柱狀圖
pie:pie chart餅狀圖
polar :polar coordinate plot極坐標繪圖

functions3:
stairs(),stem(),boxplot(),errorbar()
以上是關(guān)于統(tǒng)計的一部分圖形學(xué)習(xí)與練習(xí)

總結(jié)

以上是生活随笔為你收集整理的台湾国立大学郭彦甫Matlab教程笔记(11) advanced 2D plots 上的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。