Matlab画图小结(一)
#前言
Matlab作為常用的科學計算軟件,其自帶的畫圖足以支持我們日常的畫圖所學。
##圖中子圖作法
第一種:magnify是個動態放大鏡,固化后可以用tools>edit plot移動小圖,能選取多個局部圖,這個方法不錯
用法:打開figure圖,輸入magnify,左鍵動態選取查看,ctrl+左鍵固化,也可右鍵固化,‘<’和‘>’縮放方法范圍,‘+’和‘-’縮放放大比例。
Ever wish MATLAB had a magnifying glass so you could look at the details of a small region of your plots without having to zoom in and out again and again? Just run 'magnify.m' with the figure of interest as the current figure, then use the left mouse button to bring up a magnified veiw that you control. Or use the 'Ctrl' key while clicking to bring up a magnifying glass that 'locks' onto the figure when released (for use when copying and printing figures). Use the '<' and '>' keys to make the magnifying glass smaller or larger. Use '-' and '+' to decrease or increase the magnification level.網上一般有三種方法在MATLAB中做圖中圖,但是我感覺使用magnify是magnify是個動態放大鏡,固化后可以用tools>edit plot移動小圖,能選取多個局部圖。下面詳細講解其使用方法:
1、下載magnify,官網下載地址http://www.mathworks.com/matlabcentral/fileexchange/5961-magnify
2、下載后將文件放到當前figure目錄下(也就是當前工作區間中)。
3、打開figure圖,輸入magnify,然后右鍵選中想要放大的區域(按著右鍵不要動),然后可以使用‘<’和‘>’縮放方法范圍,‘+’和‘-’縮放放大比例,看著放大的小圖滿意后松開右鍵即可。(這一過程網上都管他們叫固化)
4、然后用tools>edit plot就可以移動小圖到你想放在的地方了。
f1=figure; plot(1:100,randn(1,100),(1:300)/3,rand(1,300)), grid on, magnify(f1) % You must complete the amplification in the figure before you run the next code.Assuming we just magnify once. d=get(f1,'Children'); d(1).Position=[0 0.5 d(1).Position(3) d(1).Position(4)];%Move the magnified figure to the specific position axis = d(2); rectangle('Position',[d(1).XLim(1),d(1).YLim(1),d(1).XLim(2)-d(1).XLim(1),d(1).YLim(2)-d(1).YLim(1)],'LineWidth',2,'LineStyle','--','EdgeColor','r')%Mark the magnified part in the original figure.http://cn.mathworks.com/matlabcentral/fileexchange/5961-magnify第二種:用起來也很方便,缺點是只能框選一處,不能選取多個。
美國學者Duane HanselmanandBruce Littlefield編寫的MasteringMATLAB7上的例子,實現圖中圖縮放功能,使用了3個函數,這三個函數在附件中,當然也可以到網站http://www.eece.maine.edu/mm/去下載。
函數簡單介紹:
getn()將get()函數的輸出參數簡化為單個變量;
getbox()實現矩形區域的選擇,并捕捉該區域的橫縱標的范圍
mmzoom創建一個縮放坐標軸。
試圖做了例子,傳上來一起分享。
例子:
第三種:也可編個小程序,分別在兩個圖形句柄里畫圖,可以借鑒下.
代碼;figure(1);h2=axes('position',[0 0 1 1]);axis(h2);x2=0:pi/50:2*pi;y2=sin(x2);h3=plot(x2,y2,'b-');h1=axes('position',[0.3 0.2 0.4 0.4]);axis(h1);x1=0:pi/50:2*pi;y1=cos(x1);h4=plot(x1,y1,'r-');hold onh=[h3; h4];str=['大圖中的曲線';'小圖中的曲線'];legend(h,str);
看下來,還是傾向第三種使用axes方法放大局部圖像的方法,關于axes的詳細解釋見
http://5460521xp.blog.163.com/blog/static/6908756920122210253741/
figure;% 生成新的圖形窗口 plot(t,y);axis('equal'); % 繪制整體曲線圖 axes('Position',[0.18,0.62,0.28,0.25]); % 生成子圖 plot(t1,y1); % 繪制局部曲線圖 xlim([min(t1),max(t1)]); % 設置坐標軸范圍axes函數后的參數說明,以橫縱坐標量程為基準:
例中0.18為子圖左下角的歸一化橫坐標位置:
(該位置的橫坐標-橫坐標起始值)/橫坐標量程=0.18,同理,0.62為子圖左下角的歸一化縱坐標位置:
(該位置的縱坐標-縱坐標起始值)/縱坐標量程=0.62,0.28為子圖的歸一化寬度,0.25為子圖的歸一化高度,具體計算過程同上
下面通過繪制 y=1/(t-3) 的曲線舉例說明該函數的使用方法。 程序如下: ``` clc;clear;close all; t=linspace(0,6,300);% 生成曲線的整體離散坐標值t t1=linspace(2.8,3.2,300); % 生成曲線的局部離散坐標值t1 y=sin(1./[t-3]);% 生成曲線的整體離散函數值y y1=sin(1./[t1-3]); % 生成曲線的局部離散函數值y1 figure;% 生成新的圖形窗口 plot(t,y);axis('equal'); % 繪制整體曲線圖 axes('Position',[0.18,0.62,0.28,0.25]); % 生成子圖 plot(t1,y1); % 繪制局部曲線圖 xlim([min(t1),max(t1)]); % 設置坐標軸范圍 ```途中標記
` ``
a=2;
b=3;
t=0:0.01:10;
y=exp(-at).sin(bt);
[y_max,i_max]=max(y);
t_text=[‘t=’,num2str(t(i_max))];%生成最大值點的橫坐標字符串
y_text=[‘y=’,num2str(y_max)];%生成最大值的縱坐標字符串
max_text=char(‘maxinum’,t_text,y_text);%生成標志最大值點的字符串
tit=['y=exp(-2t)sin(3t)’];%生成標志圖名的字符串
plot(t,zeros(size(t)),‘k’);%畫縱坐標為0的基準線
hold on;
plot(t,y,‘b’);%用藍色畫y(t)曲線
plot(t(i_max),y_max,‘r.’,‘MarkerSize’,20),%用大紅點標最大值點
text(t(i_max)+0.3,y_max+0.05,max_text);
title(tit),xlabel(‘t’),ylabel(‘y’),hold off;
%橫縱坐標的表示
xlim([0 20])
ylim([8900 9250])
xlabel(’\itt\rm(s)’)%表示斜體和分離開
ylabel(’\itn\rm_1(r/min)’)
%橫縱坐標的顯示
set(gca,‘XTickMode’,‘manual’,‘XTick’,[0:2:20]);
set(gca,‘YTickMode’,‘manual’,‘YTick’,[8900:50:9250]);
set(gca,‘Fontname’,‘Times New Roman’,‘FontSize’,6,‘LineWidth’,1);%坐標軸字體設置
set(gcf,‘color’,‘white’);%坐標軸顏色設置
box off %有無外框
Width=4.72;Height=3.55;%單位為厘米!!!這里根據需求更改。。。
ScreenSize=14.1; % 屏幕大小,單位為英寸,且應該注意該值通常指對角線的長度,需根據勾股定理計算寬高
ScreenSizeInCM=ScreenSize2.45; %1英寸等于2.45厘米,長度換算
scrsz = get(0,‘ScreenSize’); %得到屏幕分辨率
ScreenWidth=ScreenSizeInCM/sqrt(1+(scrsz(4)/scrsz(3))^2);%屏幕寬,單位為厘米
ScreenHeight=ScreenWidthscrsz(4)/scrsz(3);%屏幕高,單位厘米
WidthRatio=Width/ScreenWidth;%圖形的期望寬度與屏幕寬度的比值
HeightRatio=Height/ScreenHeight;%圖形的期望高度與屏幕高度的比值
set(gcf,‘Unit’,‘Normalized’,‘Position’,[0.1 0.1 WidthRatio HeightRatio]);%設置繪圖的大小,無需再到word里再調整大小
總結
以上是生活随笔為你收集整理的Matlab画图小结(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网站服务器建设方法,如何在服务器上建立站
- 下一篇: Matlab画图小结(二)