1.多變量繪圖
由於在matlab繪圖時遇到多個變量,需要逐一繪制(還沒找到別的好方法),在此過程中使用hold on保持圖形,比較繁瑣,所以將其封裝成為以下函數,簡化該過程。目的是以更接近統計學的思維去繪圖,當然還十分粗糙,和ggplot2沒得比,不過出發點是向着它努力的。
函數如下:
function mulplot(data,nums,p,legfun)
%data:待繪圖的數據,每列一個變量
%nums:繪圖所用數據所在列1×3,依次為顏色、橫坐標、縱坐標
%p:繪制類型,'l'代表線條,'p'代表散點
%legfun:一個函數,用於修飾圖例
u=unique(data(:,nums(1)));
for i=1:length(u)
subdata=data(data(:,nums(1))==u(i),:);
if p=='l'
plot(subdata(:,nums(2)),subdata(:,nums(3)));
elseif p=='p'
scatter(subdata(:,nums(2)),subdata(:,nums(3)));
end
hold on;
end
hold off;
leg=num2cell(string(u));
for i=1:length(u)
leg{i}=legfun(leg{i});
end
legend(leg);
end
測試如下:
n=5;
a=1:n;
x=repmat(a,1,n);
y=repelem(a,1,n);
z=x./(y+1);
data=[x',y',z'];
legfun=@(x) strcat("x=",x);
mulplot(data,[1,2,3],'l',legfun);
xlabel('y');ylabel('z');
得到圖像如下:

2.色盲友好色函數
之前在這里提到了色盲友好色:https://www.cnblogs.com/dingdangsunny/p/15305232.html#_label2
但是我們雖然知道了這些顏色的RGB,每次用起來還是不方便,總要手動操作一番,所以寫成函數,方便使用。
函數:
%blind.m將當前圖窗的繪圖色序設置為色盲友好色
blind_friendly = [0,114,178;
230,159,0;
240,228,66;
204,121,167;
0,158,115;
86,180,233;
213,94,0]/255;
colororder(blind_friendly);
直接還是使用上面的案例,在末尾加上一句即可。
測試:
n=5;
a=1:n;
x=repmat(a,1,n);
y=repelem(a,1,n);
z=x./(y+1);
data=[x',y',z'];
legfun=@(x) strcat("x=",x);
mulplot(data,[1,2,3],'l',legfun);
xlabel('y');ylabel('z');
blind;
效果:

對比可以發現其差異,使用簡便,顏色已被替換為友好色。但是這只適用於線條數量小於等於7的情況,當數量大於7時可能要同時使用線型區分,或考慮其他方法。
