Matlab繪制酷炫坐標區域的方法詳解

寫瞭一個能讓坐標區域變得很炫酷的修飾函數:

同時想到瞭一個很有意思的把函數存儲進mat文件的方法,方法就不細講瞭,大傢自行點開.mat文件能夠很輕松的理解原理(大概),

使用方式

首先說明一下函數咋用:假設編寫瞭如下函數:

t=0:0.35:3*pi;
plot(t,sin(t),'Marker','d','LineWidth',2,'Color',[102,194,166]./255)
hold on
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)

在最後一行調用工具函數進行修飾,例如:

prettyAxes().ggray2()

或者:

prettyAxes(gca).ggray2()

修飾效果:

其他炫酷的背景

prettyAxes().dark()

prettyAxes().dark2()

prettyAxes().economist()

prettyAxes().gbase()

prettyAxes().gbase2()

prettyAxes().ggray()

prettyAxes().ggray2()

prettyAxes().wsj()

目前隻有這些主題,之後可能會更新.mat文件,請使用如下命令獲取可用主題列表:

prettyAxes().theme()

該命令會返回可用主題的函數名:

dark  dark2  economist  gbase  gbase2  ggray  ggray2  wsj  

註意事項

對於dark,dark2,economist,wsj這幾種風格,其背景色並不是白色,一般情況下保存圖片圖窗的背景會是默認白色,即下圖這樣:

想要連figure窗口的背景顏色一起保存需要設置figure窗口的InvertHardcopy屬性為'off',本函數已經設置好瞭這個屬性,因此直接點擊如下按鈕保存即可:

另外當文件解壓完成後後,將當前文件夾添加到搜索路徑可以在任意文件夾使用該工具函數:

代碼展示及mat文件獲取

完整代碼其實沒啥東西,但還是展示一下吧,大部分信息都存儲在.mat文件,完整代碼及.mat文件請公眾號後臺回復關鍵詞:PAX

完整代碼展示:

function PAX=prettyAxes(ax) 
% @author:slandarer
% ==================================
% 展示所有可選axes主題 
% prettyAxes().theme()
% ----------------------------------
% prettyAxes(ax).dark()
% prettyAxes().ggray()

if nargin<1
    ax=[];
end

% 從mat文件中讀取函數集合
axesTheme=load('axesTheme.mat');
axesTheme=axesTheme.theme;
% 結構體函數構造
for L=1:length(axesTheme.List)
    PAX.(axesTheme.List{L})=@()setAxesTheme(ax,axesTheme,axesTheme.List{L});
end
PAX.theme=@()showAxesTheme(axesTheme);
% =========================================================================
    % 坐標區域修飾基礎函數
    function setAxesTheme(tAxes,axesTheme,Name)
        ax=tAxes;
        if isempty(ax)
            ax=gca;
        end
        % 讀取函數信息
        sli=0;slii=0;
        tBaseStr=axesTheme.(Name);
        tBaseFunc=axesTheme.([Name,'_F']);
        eval([tBaseStr{:}])

        if ~isempty(tBaseFunc)
            % 設置鼠標移動回調
            set(ax.Parent,'WindowButtonMotionFcn',@bt_move_axes);
        end
        
        % 鼠標移動回調函數
        function bt_move_axes(~,~)
            eval([tBaseFunc{:}])
        end
    end
% -------------------------------------------------------------------------
    % 輸出可用風格列表函數
    function showAxesTheme(axesTheme)
        for i=1:length(axesTheme.List)
            fprintf('%s  ',axesTheme.List{i})
        end
        fprintf('\r\n');
    end
end

到此這篇關於Matlab繪制酷炫坐標區域的方法詳解的文章就介紹到這瞭,更多相關Matlab坐標區域內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: