




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第詳解Matlab如何繪制圓角半透明圖例目錄基本使用使用說(shuō)明完整代碼目前MATLAB的legend圖例是不支持圓角和半透明的,欸,不能咱就自己畫(huà),就是把原始圖例隱藏后不斷追蹤其位置繪制半透明的圓角矩形嘛,這有任何難度嗎???完全沒(méi)有?。∫虼司陀辛诉@篇推送(目前不支持三維繪圖):
基本使用
繼續(xù)假設(shè)我們編寫(xiě)了如下代碼:
t=0:0.35:3*pi;
plot(t,sin(t),'Marker','d','LineWidth',2,'Color',[102,194,166]./255)
holdon
plot(t,cos(t./2),'Marker','o','LineWidth',2,'Color',[252,140,97]./255)
plot(t,t,'Marker','^','LineWidth',2,'Color',[140,161,204]./255)
lgd=legend('y=sin(t)','y=cos(t/2)','y=t');
lgd.Location='northwest';
lgd.FontSize=13;
title(lgd,'Func','FontSize',14)
繪圖結(jié)果如下:
在代碼最后加上一行:
prettyLegend()
不過(guò)這樣只體現(xiàn)了圓角的性質(zhì),并沒(méi)有體現(xiàn)其半透明,要體現(xiàn)其半透明的性質(zhì)坐標(biāo)區(qū)域最好不是白色的,哎我們直接和上一篇一結(jié)合不就好了(Matlab繪制酷炫坐標(biāo)區(qū)域的方法詳解)
例如最后加上兩行(注意請(qǐng)將圖例修飾加在坐標(biāo)區(qū)域修飾后面):
prettyAxes().dark2()
prettyLegend()
prettyAxes().dark()
prettyLegend()
使用說(shuō)明
當(dāng)拖拽圖例到其他位置,圖例框會(huì)跟隨:
當(dāng)調(diào)整圖窗大小導(dǎo)致圖例框大小異常時(shí),在圖例附近晃動(dòng)鼠標(biāo)即可修復(fù)大?。?/p>
完整代碼
functionlegendBox=prettyLegend(ax)
ifnargin1
ax=gca;
holdon
legendTitleColor=[0,0,0];
ifmean(ax.Color)0.5
legendTitleColor=[1,1,1];
ax.Legend.TextColor=[1,1,1];
ax.Legend.AutoUpdate='on';
%ax.Legend.FontSize=11;
%ax.Legend.Title.FontSize=14;
ax.Legend.AutoUpdate='off';
%如果在圖窗外則不設(shè)框
if~isempty(regexpi(ax.Legend.Location,'out','once'))
ax.Legend.Box='off';
lgdPos=ax.Legend.Position;
%依據(jù)legend所處figure坐標(biāo)和axes范圍計(jì)算Legend坐標(biāo)
xyMin=[(lgdPos(1)-ax.Position(1))/ax.Position(3)*(ax.XLim(2)-ax.XLim(1))+ax.XLim(1),...
(lgdPos(2)-ax.Position(2))/ax.Position(4)*(ax.YLim(2)-ax.YLim(1))+ax.YLim(1)];
xyMax=[(lgdPos(1)+lgdPos(3)-ax.Position(1))/ax.Position(3)*(ax.XLim(2)-ax.XLim(1))+ax.XLim(1),...
(lgdPos(2)+lgdPos(4)-ax.Position(2))/ax.Position(4)*(ax.YLim(2)-ax.YLim(1))+ax.YLim(1)];
ax.Legend.UserData.NewBkg=[];
%隱藏原標(biāo)題
ax.Legend.Title.Visible='off';
%繪制新legend標(biāo)題
ax.Legend.UserData.NewTitle=text(ax,xyMin(1),xyMax(2),['',ax.Legend.Title.String],...
'FontSize',ax.Legend.Title.FontSize,'VerticalAlignment','top','FontWeight','bold','Color',legendTitleColor);
ax.Legend.Box='off';
lgdPos=ax.Legend.Position;
%依據(jù)legend所處figure坐標(biāo)和axes范圍計(jì)算Legend坐標(biāo)
xyMin=[(lgdPos(1)-ax.Position(1))/ax.Position(3)*(ax.XLim(2)-ax.XLim(1))+ax.XLim(1),...
(lgdPos(2)-ax.Position(2))/ax.Position(4)*(ax.YLim(2)-ax.YLim(1))+ax.YLim(1)];
xyMax=[(lgdPos(1)+lgdPos(3)-ax.Position(1))/ax.Position(3)*(ax.XLim(2)-ax.XLim(1))+ax.XLim(1),...
(lgdPos(2)+lgdPos(4)-ax.Position(2))/ax.Position(4)*(ax.YLim(2)-ax.YLim(1))+ax.YLim(1)];
xDiff=(xyMax(1)-xyMin(1));
yDiff=(xyMax(2)-xyMin(2));
%繪制圓角矩形作為新框
ax.Legend.UserData.NewBkg=rectangle(ax,'Position',[xyMin,xDiff,yDiff],'Curvature',0.2,...
'LineWidth',1.2,'EdgeColor',[0.390.410.39],'FaceColor',[111.2]);
%ax.Legend.Title.FontSize=14;
%隱藏原標(biāo)題
ax.Legend.Title.Visible='off';
%繪制新legend標(biāo)題
ax.Legend.UserData.NewTitle=text(ax,xyMin(1),xyMax(2),['',ax.Legend.Title.String],...
'FontSize',ax.Legend.Title.FontSize,'VerticalAlignment','top','FontWeight','bold','Color',legendTitleColor);
%返回值
legendBox.Title=ax.Legend.UserData.NewTitle;
legendBox.Box=ax.Legend.UserData.NewBkg;
oriFunc=ax.Parent.WindowButtonMotionFcn;
set(ax.Parent,'WindowButtonMotionFcn',@bt_move);%設(shè)置鼠標(biāo)移動(dòng)回調(diào)
functionbt_move(~,~)
oriFunc();
if~isempty(regexpi(ax.Legend.Location,'out','once'))
lgdPos=ax.Legend.Position;
%依據(jù)legend所處figure坐標(biāo)和axes范圍計(jì)算Legend坐標(biāo)
xyMin=[(lgdPos(1)-ax.Position(1))/ax.Position(3)*(ax.XLim(2)-ax.XLim(1))+ax.XLim(1),...
(lgdPos(2)-ax.Position(2))/ax.Position(4)*(ax.YLim(2)-ax.YLim(1))+ax.YLim(1)];
xyMax=[(lgdPos(1)+lgdPos(3)-ax.Position(1))/ax.Position(3)*(ax.XLim(2)-ax.XLim(1))+ax.XLim(1),...
(lgdPos(2)+lgdPos(4)-ax.Position(2))/ax.Position(4)*(ax.YLim(2)-ax.YLim(1))+ax.YLim(1)];
xyMin(1)=max(xyMin(1),ax.XLim(1));
xyMin(2)=max(xyMin(2),ax.YLim(1));
xyMax(1)=min(xyMax(1),ax.XLim(2));
xyMax(2)=min(xyMax(2),ax.YLim(2));
%重設(shè)位置屬性
ax.Legend.UserData.NewTitle.Position=[xyMin(1),xyMax(2)];
else
lgdPos=ax.Legend.Position;
%依據(jù)legend所處figure坐標(biāo)和axes范圍計(jì)算Legend坐標(biāo)
xyMin=[(lgdPos(1)-ax.Position(1))/ax.Position(3)*(ax.XLim(2)-ax.XLim(1))+ax.XLim(1),...
(lgdPos(2)-ax.Position(2))/ax.Position(4)*(ax.YLim(2)-ax.YLim(1))+ax.YLim(1)];
xyMax=[(lgdPos(1)+lgdPos(3)-ax.Position(1))/ax.Position(3)*(ax.XLim(2)-ax.XLim(1))+ax.XLim(1),...
(lgdPos(2)+lgdPos(4)-ax.Position(2))/ax.Position(4)*(ax.YLim(2)-ax.YLim(1))+ax.YLim(1)];
xyMin(1)=max(xyMin(1),ax.XLim(1));
xyMin(2)=max(xyMin(2),ax.YLim(1));
xyMax(1)=min(xyMax(1),ax.XLim(2))
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療教育革新遠(yuǎn)程協(xié)作工具在醫(yī)療培訓(xùn)中的應(yīng)用
- 醫(yī)養(yǎng)結(jié)合服務(wù)模式的理論基礎(chǔ)與實(shí)際應(yīng)用
- 專科護(hù)士在醫(yī)療安全中的教育與培訓(xùn)
- 代工采購(gòu)合同范例
- 利用商業(yè)智能和醫(yī)療大數(shù)據(jù)提升企業(yè)員工整體健康的策略與實(shí)踐
- 小兒上肢腫塊的臨床護(hù)理
- 公司木材采購(gòu)合同范例
- 以移動(dòng)支付為驅(qū)動(dòng)的電子商務(wù)平臺(tái)創(chuàng)新研究-基于區(qū)塊鏈技術(shù)分析
- 專利實(shí)施獨(dú)占合同范例
- 住宅個(gè)人貸款合同范例
- 葡萄酒品嘗學(xué)第八章-2013
- JJF 1793-2020海水營(yíng)養(yǎng)鹽測(cè)量?jī)x校準(zhǔn)規(guī)范
- GB/T 20080-2017液壓濾芯技術(shù)條件
- 超音速流動(dòng)與燃燒的大渦模擬基礎(chǔ)課件
- 大班科學(xué)《神奇的洞洞》課件
- 季節(jié)性防雷防汛防臺(tái)風(fēng)安全檢查表
- 歸檔文件目錄
- 2022年四川省綿陽(yáng)市中考英語(yǔ)試題及參考答案
- NYT 393-綠色食品 農(nóng)藥使用準(zhǔn)則
- 偏心塊振動(dòng)式土壤夯實(shí)機(jī)的結(jié)構(gòu)設(shè)計(jì)說(shuō)明
- 主題班會(huì)《堅(jiān)定信念--放飛理想》
評(píng)論
0/150
提交評(píng)論