至少在美賽這種畫圖大賽中,圖像好不好看非常重要,這期推送主要講解如何自制色卡,將顏色應用到繪圖中,并對圖像進行簡單的修飾。
PART.0 取色器介紹
有不少人問我自帶繪圖配色太難看咋辦。咋樣能配制出更好看的配色:
有不少人問我玫瑰花的顏色那一堆數值是咋設置的:
這里回答一下,想要好看的顏色可以從優秀的論文繪圖中取色,而玫瑰花的顏色基本上是從真實的玫瑰花上取色的,在此在這里給大家介紹一個免費的編寫的圖像顏色取色器(自己寫的,GUI版,App 版都有)。文末會提供下載方式,使用效果如下:
支持多種導出格式:
命令行導出:
導出為csv:
導出為顏色圖:
demo.1 plot配色修飾
假設我們已經獲取了一些顏色:
導出的數據為:
matlab" style="color: black;background: rgb(245, 242, 240);text-shadow: white 0px 1px;font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace;text-align: left;word-break: normal;overflow-wrap: normal;line-height: 1.5;tab-size: 4;hyphens: none;padding: 1em;margin-top: 0.5em;margin-bottom: 0.5em;overflow: auto;font-size: 13px;">[0.859,0.451,0.361
0.941,0.659,0.431
0.600,0.541,0.459
0.949,0.769,0.478
0.478,0.400,0.322];
我們可以直接為每個plot函數設置'Color'屬性
t=0:0.6:3*pi;
plot(t,sin(t).*1.2,'LineWidth',2,'Marker','o','Color',[0.859,0.451,0.361])
hold on
plot(t,cos(t./2),'LineWidth',2,'Marker','s','Color',[0.941,0.659,0.431])
plot(t,t,'LineWidth',2,'Marker','^','Color',[0.600,0.541,0.459])
當然直接設置坐標區域的顏色序列效果是一樣的:
t=0:0.6:3*pi;
plot(t,sin(t).*1.2,'LineWidth',2,'Marker','o')
hold on
plot(t,cos(t./2),'LineWidth',2,'Marker','s')
plot(t,t,'LineWidth',2,'Marker','^')
% 直接在最后面設置色序
ax=gca;
ax.ColorOrder=[0.859,0.451,0.361
0.941,0.659,0.431
0.600,0.541,0.459
0.949,0.769,0.478
0.478,0.400,0.322
];
增添其他修飾:
t=0:0.6:3*pi;
plot(t,sin(t).*1.2,'LineWidth',2,'Marker','o')
hold on
plot(t,cos(t./2),'LineWidth',2,'Marker','s')
plot(t,t,'LineWidth',2,'Marker','^')
% 直接在最后面設置色序
ax=gca;
ax.ColorOrder=[0.859,0.451,0.361
0.941,0.659,0.431
0.600,0.541,0.459
0.949,0.769,0.478
0.478,0.400,0.322
];
% 加入圖例
legend('plot-1','plot-2','plot-3','TextColor',[.3,.3,.3])
% 修飾坐標區域
ax.LineWidth=2; % 設置邊框粗細
ax.Box='on'; % 開啟框輪廓
ax.TickDir='in'; % 刻度朝里
ax.XMinorTick='on'; % 開啟X軸次刻度線
ax.YMinorTick='on'; % 開啟Y軸次刻度線
ax.XGrid='on'; % 開啟X軸網格
ax.YGrid='on'; % 開啟Y軸網格
ax.GridLineStyle='--'; % 更改網格為虛線
ax.XColor=[.3,.3,.3]; % 將X軸顏色設置為灰色
ax.YColor=[.3,.3,.3]; % 將Y軸顏色設置為灰色
ax.FontWeight='bold'; % 加粗文字
ax.FontName='Cambria'; % 更改字體
ax.FontSize=13; % 設置文字大小
demo.2 surf配色修飾
可以直接設置:
surf(peaks)
map=[
0.282,0.114,0.435
0.271,0.208,0.506
0.204,0.380,0.553
0.169,0.455,0.557
0.149,0.675,0.510
0.404,0.800,0.361
0.592,0.847,0.247
0.992,0.906,0.145
];
colormap(map)
我們會發現顏色太少過渡會不自然matlab中改變圖線顏色,因此我們可以對顏色進行線性插值把原本幾種顏色插值成上百個顏色的色帶:
surf(peaks)
map=[
0.282,0.114,0.435
0.271,0.208,0.506
0.204,0.380,0.553
0.169,0.455,0.557
0.149,0.675,0.510
0.404,0.800,0.361
0.592,0.847,0.247
0.992,0.906,0.145
];
% 插值成一百行的色帶
Xi=1:size(map,1);Xq=linspace(1,size(map,1),100);
map=[interp1(Xi,map(:,1),Xq,'linear')',...
interp1(Xi,map(:,2),Xq,'linear')',...
interp1(Xi,map(:,3),Xq,'linear')'];
colormap(map)
顏色過渡自然了很多matlab中改變圖線顏色,再進行一些其他修飾:
surf(peaks)
map=[
0.282,0.114,0.435
0.271,0.208,0.506
0.204,0.380,0.553
0.169,0.455,0.557
0.149,0.675,0.510
0.404,0.800,0.361
0.592,0.847,0.247
0.992,0.906,0.145
];
% 插值成一百行的色帶
Xi=1:size(map,1);Xq=linspace(1,size(map,1),100);
map=[interp1(Xi,map(:,1),Xq,'linear')',...
interp1(Xi,map(:,2),Xq,'linear')',...
interp1(Xi,map(:,3),Xq,'linear')'];
colormap(map)
% 修飾坐標區域
ax=gca;
ax.LineWidth=1.5; % 設置邊框粗細
ax.Box='on'; % 開啟框輪廓
ax.TickDir='in'; % 刻度朝里
ax.XMinorTick='on'; % 開啟X軸次刻度線
ax.YMinorTick='on'; % 開啟Y軸次刻度線
ax.ZMinorTick='on'; % 開啟Z軸次刻度線
ax.XColor=[.3,.3,.3]; % 開啟X軸網格
ax.YColor=[.3,.3,.3]; % 開啟Y軸網格
ax.ZColor=[.3,.3,.3]; % 開啟Z軸網格
ax.FontWeight='bold'; % 加粗文字
ax.FontName='Cambria'; % 更改字體
ax.FontSize=13; % 設置文字大小
ax.GridLineStyle='--'; % 更改網格為虛線
cb=colorbar; % 添加顏色欄
cb.LineWidth=1.5; % 設置顏色欄框粗細
part.3 自制色卡
這里提供幾張自己自制的高質量論文配色色卡,需要注意的是這里RGB顏色數值范圍為0-255,要換成能用的RGB顏色范圍只需要除以255即可:
p1.
p2.
p3.
p4.
p5.
p6.
p7.
想要獲得顏色提取器(GUI\APP)
請公眾號后臺回復:
歡迎關注 隨筆
· 關注作者