乐趣区

关于matlab:Plot-Tiny-Tricks-for-MATLAB-绘图的小技巧

MATLAB plot Tiny Tricks — by Optic_css

Use set(gca, ·, ·, ·, ···) HANDLE for editing

[纪录] 这里是我常常应用的 MATLAB 制图 Code,记录下来是为了当前更快地实现一些根本的制图 Setting 类的操作,换句话说,当作查阅的备用叭 … …

上面所展现的 Codes 是一些根本的绘图 Setting,很容易能看懂,根本蕴含了对于一张图像

  • ‘colormap’
  • ‘grid’
  • ‘box’
  • ‘xtick’、’ytick’、’LinwWidth’、’FontName’、’Color’
  • ‘xlabel’、’ylabel’、’title’、’legend’
  • ‘axis’

的设置,这样曾经算是根本满足了需要 … …

% Close all image windows
close all;
%———————————————————————————————————————————————————
%|···········Plotting/Facing Codes Here············|
%———————————————————————————————————————————————————
% Retain control of the current diagram window
hold on;
% 逆転 / バック・キック colormap
colormap(flipud(othercolor('Spectral9')));
% colormap(othercolor('Spectral9'));
% Add a plaid shading
grid on;
% Remove the outer frame of the drawing window
box off;
%———————————————————————————————————————————————————
%|·········Use set(·) to Change the style··········|
%———————————————————————————————————————————————————
% set(gca,'xticklabel',roundn((50:50:500)*deltal,-1));
set(gca,'xtick',20:20:180);
% set(gca,'yticklabel',roundn((50:50:500)*deltal,-1));
% set(gca,'yTickLabel',num2str(get(gca,'yTick')','%.12f'));
set(gca,'ytick',50:50:500);
set(gca,'Linewidth',1.5);
set(gca,'FontName','Times New Roman');
set(gca,'Color',[1.000000000000000   0.388235294117647   0.278431372549020]);
%———————————————————————————————————————————————————
%|·················set the labels··················|
%———————————————————————————————————————————————————
xlabel('\xi');
ylabel('\xi');
title('\xi');
legend('相邻方向差分值','FontName','微软雅黑');
%———————————————————————————————————————————————————
%|······Axis setting, use the handle axis(·)·······|
%———————————————————————————————————————————————————
axis([0 5400 30 80]);
legend(['$\bar{x}(\lambda)$';'$\bar{y}(\lambda)$';'$\bar{z}(\lambda)$'],'interpreter','latex');

上面则是一个小 trick,对于如何将图窗 background 变通明的 Setting 办法,次要是前面对于 ’InvertHardCopy’ 的 setting,这是属于某个凶恶分享者的资源,

%———————————————————————————————————————————————————
%|·····················Trans·······················|
%———————————————————————————————————————————————————
% If you ever wondered this: which is particularly useful when you export it to formats that feature transparency, like eps, gif, png, ...
% you created a figure and guess the configuration as below:
set(gcf,'color','none');
set(gca,'color','none');
% but this following little detail took me ages to figure out
set(gcf,'InvertHardCopy','off');

A useful (MAYBE) HEX-RGB to String convertor

上面是一个将 hexadecimal RGB 色调代号转换为 MATLAB 实用的色调值,也即

  • 输出一个 $\rm string:\ ”ff 63 47”/”ff-63-47”$
  • 输入一组向量

    $\rm col=1\times3$
    $1.000000000000000\ \ \ 0.388235294117647\ \ \ 0.278431372549020$

设计中采纳 inline function $\rm hexstr(·)$,做成了一个 vector 函数的格局,当需要很大的时候,可能显著减小 calling 所带来的耗费,

col = hex2nstr(["ff 63 47","2e 8b 57","6a 5a cd"]);
%————————————————————————————————————————————————————————————
%|··by Optic_css, the nStr(·) can help you get the [1,1,1]··|
%————————————————————————————————————————————————————————————
function nStr = hex2nstr(hexstr)
    % Function that helos to get the normalized str used in MATLAB color spaces
    nStr = [];
    for io = 1:length(hexstr)
        % Splitor to get the divided types, "ff 0a 89"/"ff-0a-89" -> "ff","oa","89"
        splitor = strsplit(hexstr(io), '["-",]',"DelimiterType","RegularExpression");
        % Divide the splitor into 3 pieces
        dec_ = cell2mat(splitor(1,1));
        dec__ = cell2mat(splitor(1,2));
        dec___ = cell2mat(splitor(1,3));
        % Divided by 255: "ff", and take string addtion
        nStr = [nStr;[hex2dec(dec_)/255 hex2dec(dec__)/255 hex2dec(dec___)/255]];
    end
end
退出移动版