matlab学位论文绘图美化工具_MATLAB绘图美化超全超实用教程
本文將詳細介紹如何用matlab繪圖并美化。
如果你只會plot(x,y),那你的圖將會不出意外地單薄&空洞&丑,本文將教你如何精心修飾matlab的成圖,讓圖片看起來更好看,讓自己的大作業和報告更好看一點。關于figure()
創建圖窗窗口:figure()
figure()的屬性:
'Name':在標題欄顯示的名稱,接字符串,如'Test'
'Position':在電腦屏幕上的位置和大小,后接向量[left,bottom,width,height]也就是說指定了圖窗的左下角位置,再向右+width、向上+height延伸。
'unit':單位,可以選擇'normalized',使得位置參數為屏幕的歸一化位置,屏幕歸一化坐標(x,y),(0,0)表示左下角,(1,1)表示右上角。我的桌面
'color':圖窗背景顏色,'red'、'green'、'blue'、'cyan'、'magenta'、'yellow'、'black'、'white' 和 'none',其中none表示透明。或者RGB三通道表示法[R,G,B],其中三分量都要歸一化到1,即R/255,G/255,B/255。https://ww2.mathworks.cn/help/matlab/ref/figure.html
例如:
fullfig=figure('Name','Hello','unit','normalized','Position',[0.1, 0.1, 0.3, 0.7],'color',[100/255,100/255,100/255]);
將會產生左下角位置在[0.1,0.1]、長0.3寬0.7的圖窗,其名字為'Hello',其背景顏色為[100/255,100/255,100/255]也就是灰色。關于plot()
plot(x,y)畫圖
'LineWidth',線條寬度,最小是1
'color',線條顏色,同上
'LineSpec',這里直接表示線的形狀,不用寫'LineSpec'https://www.mathworks.com/help/matlab/ref/linespec.html
'MarkerSize'、'MarkerEdgeColor'、?'MarkerFaceColor':如果線形使用Marker,可以調節大小、邊界顏色、內部顏色
例如,
>> x=0:1/pi:2*pi;
>> y=sin(x);
>> plot(x,y,'--bo','LineWidth',2,'color','blue','MarkerSize',10,'MarkerEdgeColor','black','MarkerFaceColor','red')
表示畫一條如下圖所示的正弦函數,'--bo'表示虛線、藍色、采樣點用圓圈標出。線形和點形以及顏色可以自由組合。
關于圖注、圖例、坐標軸、字體大小
命名橫縱坐標
a=xlabel('Name of x axis');b=ylabel('Name of y axis');
設置標題
c=title('contents of your title');
設置圖例
d=legend('y1','y2');
設置上述內容的位置、字體大小、粗細
set(a,'unit','normalized','Position',[x,y],'FontSize',number_fontsize,'FontName',name_of_font_style)
set(a,'unit','normalized','Position',[x,y,width,height],'FontSize',number_fontsize,'FontName',name_of_font_style,'LineWidth',number_linewidth);
示例:
>> x=0:1/pi:2*pi;
>> y1=sin(x);y2=cos(x);
%創建圖窗%
>> figure('color','white')
%畫sin(x)和cos(x)圖%
>> plot(x,y1,'--bo','LineWidth',2,'color','blue','MarkerSize',10,'MarkerEdgeColor','black','MarkerFaceColor','red');
>> hold on;plot(x,y2,'--g*','LineWidth',2,'color','blue','MarkerSize',10,'MarkerEdgeColor','black','MarkerFaceColor','red');
%創建坐標軸、標題、圖例的對象
>> a=xlabel('x (time)');b=ylabel('y (m)');c=title('sin(x) and cos(x)');d=legend('sin(x)','cos(x)');
%位置、大小、字體大小、字體樣式設置
>> set(a,'unit','normalized','Position',[0,-0.05],'fontsize',15,'fontname','Times New Roman');
>> set(b,'unit','normalized','Position',[-0.05,1],'fontsize',15,'fontname','Times New Roman');
>> set(c,'fontsize',15,'fontname','Times New Roman');
>> set(d,'unit','normalized','Position',[0.2,0.2,0.1,0.1],'fontsize',10)
%圖窗所有線條粗細設置為2
>>?set(gca,'LineWidth',2)
%開啟網格
>> grid on;
%設置x軸、y軸的顯示范圍
>> xlim([0 2*pi])
>> ylim([-1.1 1.1])
%注:如果想畫到上限,只需用+inf代替上限
關于非常規坐標軸
>> set(gca,'YDir','reverse');
>> set(gca,'YDir','normal');
y坐標軸反向或正常
半對數、對數畫圖
semilogx(x,y);loglog(x,y)
關于參考線、參考點、標注點
橫線實現方式:
利用ones(m,n)生成與y相同的純1向量,再給它乘上你要標注的數
size(y)返回y的行列值對(m,n),
例如標y=0的淺色虛線:
>>?hold on;plot(x,0*ones(size(y)),'--','LineWidth',1,'color',[100/255,100/255,100/255]);
豎線實現方式:
利用plot()兩點成線
plot([x0,x0],[y_min,y_max]);
例如在Pi/2處畫從0到1的豎虛線:
>> hold on;plot([pi/2,pi/2],[0,1],'--','LineWidth',1,'color',[100/255,100/255,100/255]);
小細節:如果先加圖例,圖例會把你畫的橫豎線也標上'data 1','data 2'。如果畫完參考線再加legend,legend只會標注標簽名數量個數據,就不會出現把參考線也標上的情況。
標注文字:text(x,y,'contents')
>> text(pi,0,'\leftarrow sin(\pi)','fontsize',15);關于多個圖
subplot(m,n,index)由matlab根據選定的m行n列自動設置子圖尺寸https://ww2.mathworks.cn/help/matlab/ref/subplot.html
或者需要精細化設置位置:
%設置當前圖窗單位為歸一化
>> set(gcf,'color','none','unit','normalized','position',[0,0,1,1]);
%設置左下角出現在(0.2,0.22)位置,寬0.55,高0.4
>> positionVector1 = [0.2, 0.55, 0.22, 0.4]; subplot('Position',positionVector)
這里畫子圖下面的操作和上面都一樣,唯一要記住的是,每一個subplot,都相當于一個figure(),這就是說,你在每個subplot下面寫的xlabel、title、legend之類的,都只會設置subplot下面的圖。
子圖示例:
%子圖一
%設置子圖位置
positionVector1 = [0.2, 0.55, 0.22, 0.4];
subplot('Position',positionVector1)
%畫圖
plot(A(:,2),(A(:,1)/1000),'LineWidth',2,'color','black');
%畫參考線
hold on;plot(zeros(size(A(:,2))),(A(:,1)/1000),'--','LineWidth',1,'color',[100/255,100/255,100/255]);
%設置坐標軸范圍
ylim([0 6371]);xlim([-2*max(abs(A(:,2))) +2*max(abs(A(:,2)))]);
%畫參考線
hold on;plot([-2*max(abs(A(:,2))) +2*max(abs(A(:,2)))],[6371-670 6371-670],'--','LineWidth',1,'color',[100/255,100/255,100/255])
hold on;plot([-2*max(abs(A(:,2))) +2*max(abs(A(:,2)))],[6371-2890 6371-2890],'--','LineWidth',1,'color',[100/255,100/255,100/255])
hold on;plot([-2*max(abs(A(:,2))) +2*max(abs(A(:,2)))],[6371-5150 6371-5150],'--','LineWidth',1,'color',[100/255,100/255,100/255])
%給坐標軸命名
ylabel('r (km)');xlabel('U(r)'); set(gca,'YDir','reverse');
%修改子圖線條粗細
set(gca,'LineWidth',3,'fontsize',15);
positionVector2 = [0.58, 0.55, 0.22, 0.4];
subplot('Position',positionVector2)
plot(A(:,3),(A(:,1)/1000),'LineWidth',2,'color','black');
hold on;plot(zeros(size(A(:,3))),flip(A(:,1)/1000),'--','LineWidth',1,'color',[100/255,100/255,100/255]);
ylim([0 6371]);xlim([-2*max(abs(A(:,3))) +2*max(abs(A(:,3)))])
hold on;plot([-2*max(abs(A(:,3))) +2*max(abs(A(:,3)))],[6371-670 6371-670],'--','LineWidth',1,'color',[100/255,100/255,100/255])
hold on;plot([-2*max(abs(A(:,3))) +2*max(abs(A(:,3)))],[6371-2890 6371-2890],'--','LineWidth',1,'color',[100/255,100/255,100/255])
hold on;plot([-2*max(abs(A(:,3))) +2*max(abs(A(:,3)))],[6371-5150 6371-5150],'--','LineWidth',1,'color',[100/255,100/255,100/255])
ylabel('raduis (km)');xlabel('dU(r)/dr'); %set(gca,'YDir','reverse');
set(gca,'LineWidth',3,'fontsize',15);
positionVector3 = [0.2, 0.07, 0.22, 0.4];
subplot('Position',positionVector3)
plot(zeros(size(A(:,1))),(A(:,1)/1000),'--','LineWidth',1,'color',[100/255,100/255,100/255]);
ylim([0 6371]);xlim([-1 1])
hold on;plot([-1 1],[6371-670 6371-670],'--','LineWidth',1,'color',[100/255,100/255,100/255])
hold on;plot([-1 1],[6371-2890 6371-2890],'--','LineWidth',1,'color',[100/255,100/255,100/255])
hold on;plot([-1 1],[6371-5150 6371-5150],'--','LineWidth',1,'color',[100/255,100/255,100/255])
ylabel('raduis (km)');xlabel('V(r)'); %set(gca,'YDir','reverse');
set(gca,'LineWidth',3,'fontsize',15);
positionVector4 = [0.58, 0.07, 0.22, 0.4];
subplot('Position',positionVector4)
plot(zeros(size(A(:,1))),(A(:,1)/1000),'--','LineWidth',1,'color',[100/255,100/255,100/255]);
ylim([0 6371]);xlim([-1 1])
hold on;plot([-1 1],[6371-670 6371-670],'--','LineWidth',1,'color',[100/255,100/255,100/255])
hold on;plot([-1 1],[6371-2890 6371-2890],'--','LineWidth',1,'color',[100/255,100/255,100/255])
hold on;plot([-1 1],[6371-5150 6371-5150],'--','LineWidth',1,'color',[100/255,100/255,100/255])
ylabel('raduis (km)');xlabel('dV(r)/dr');% set(gca,'YDir','reverse');
set(gca,'LineWidth',3,'fontsize',15);
%設置總標題
name=['_{' num2str(n) '}S_{' num2str(l) '}'];%latex
sgt =sgtitle(name);sgt.FontSize = 30;
%加文字
config=[ 'Eigf=' num2str(Eigf) ',Gv=' num2str(Gv) ',Q=' num2str(Q) 'Err=' num2str(Err)];
suptitle(config);
%保存圖片
I=getimage(gcf);
pngname=[ num2str(n) 'S' num2str(l)];
saveas(fullfig,[filepath pngname '.png']);
最后成圖:
那么如何給圖加標題呢?
matlab2020之前有suptitle函數,matlab2020有sgtitle函數,和title函數差不多。關于三維圖
最近沒畫三維圖,有空總結一下。
另外還有畫三維圖時加colorbar的細節
https://www.mathworks.com/help/matlab/ref/colorbar.html
總結
以上是生活随笔為你收集整理的matlab学位论文绘图美化工具_MATLAB绘图美化超全超实用教程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux学习随手笔记
- 下一篇: 云计算之VPC