是否可以在MATLAB中的一個座標軸上着色單個數字(或一組數字)?如何分配多種顏色來繪製MATLAB中的標記標記?
假設我有一個情節:
plot(1:10, rand(1,10))
現在,我可以如使x軸上的數字3變成紅色?
是否可以在MATLAB中的一個座標軸上着色單個數字(或一組數字)?如何分配多種顏色來繪製MATLAB中的標記標記?
假設我有一個情節:
plot(1:10, rand(1,10))
現在,我可以如使x軸上的數字3變成紅色?
不幸的是,一個軸對象中的刻度標籤不能有多種顏色。然而,有一個解決方案(啓發this page from MathWorks support site),達到相同的效果。它將現有座標軸與其他只有一個紅色座標軸的座標軸重疊。
下面是一個例子:
figure
plot(1:10, rand(1,10))
ax2 = copyobj(gca, gcf); %// Create a copy the axes
set(ax2, 'XTick', 3, 'XColor', 'r', 'Color', 'none') %// Keep only one red tick
ax3 = copyobj(gca, gcf); %// Create another copy
set(ax3, 'XTick', [], 'Color', 'none') %// Keep only the gridline
結果是:
作爲替代拷貝整個軸內容,有可能通過創建附加axes
對象來做到這一點也:
ax = axes();
p = plot(1:10, rand(1,10));
myTick = 3;
% Create new axes with transparent backgrounds
ax2 = axes();
ax3 = axes();
set([ax2 ax3], 'XLim', xlim(ax));
set([ax2 ax3], 'Color', 'none');
set(ax3, 'XTick', [], 'YTick', []);
% Give one new axes a single tick mark
set(ax2, 'YTick', []);
set(ax2, 'XTick', myTick);
set(ax2, 'XColor', 'r');
% This line is necessary to use the plot toolbar functions like zoom/pan
linkaxes([ax ax2 ax3]);
+1:如果您手動設置'XLim',則不需要'linkaxes'; –
如果您想使用工具欄的縮放功能,您可以這樣做:) – wakjah
Right :)另外,可以做'xlim(ax)'而不是'get(ax,'XLim')',它更短。 –
單個刻度標籤可以使用tex
markup進行着色,默認情況下,該標籤已啓用刻度標籤。它在軸的TickLabelInterpreter
屬性中定義。
它提供了着色文本兩個命令:
\color{<name>}
,其中<name>
是顏色的名稱,如「紅色」或「綠色」,並\color[rgb]{<R>,<G>,<B>}
,其中<R>
,<G>
和<B>
是之間的數字0和1並定義一個RGB顏色。這些命令可以用來彩單刻度標籤:
plot(1:10, rand(1,10))
ax = gca;
% Simply color an XTickLabel
ax.XTickLabel{3} = ['\color{red}' ax.XTickLabel{3}];
% Use TeX symbols
ax.XTickLabel{4} = '\color{blue} \uparrow';
% Use multiple colors in one XTickLabel
ax.XTickLabel{5} = '\color[rgb]{0,1,0}green\color{orange}?';
% Color YTickLabels with colormap
nColors = numel(ax.YTickLabel);
cm = jet(nColors);
for i = 1:nColors
ax.YTickLabel{i} = sprintf('\\color[rgb]{%f,%f,%f}%s', ...
cm(i,:), ax.YTickLabel{i});
end
這是結果的外觀:
的代碼在MATLAB R2016b爲我工作R2017a。
這看起來很棒!我不能測試它,因爲我不再有MATLAB。 ( –
)的確如此,與許多新的便捷圖形功能一樣,這僅適用於HG2,所以對於MATLAB版本> = R2014b。 – Hoki
它是您想要修改的x-tick標籤嗎? – Schorsch
是的,它是x-tick標籤。 –
請參閱[這個問題]的答案的第二部分(http://stackoverflow.com/questions/16532176/how-to-add-marker-to-matlab-colorbar/16532405#16532405) - 你應該能夠修改它以更改單個刻度的顏色,而不是使其變爲粗體(並將其用於常規座標軸而不是顏色條)。 – wakjah