有没有可能在MATLAB中为一个坐标轴上的单个数字(或一组数字)着色?
假设我有一个绘图:
plot(1:10, rand(1,10))
现在,我能否让x轴上的数字3变成红色?
不幸的是,在一个坐标轴对象中不能有多种颜色的刻度标签。但是,有一个方法(受 MathWorks 支持站点上 这个页面 的启发)可以实现相同的效果,即在现有的坐标轴上覆盖另一个只有一个红色刻度的坐标轴。
以下是一个例子:
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
copyobj
,你可以创建第二个 axes
,并在其上设置 Color
;将其设置为 'none'
将使背景透明。 - wakjahlinkaxes
)以便它们正确重叠。谢谢你提醒我关于 'Color'
的问题,我注意到我的刻度线消失了,将其设置为 'none'
可以解决这个问题 :) - Eitan Tset(gca,'XGrid','on')
通常出现的内容。我刚刚发现它实际上可以在您上面的代码中工作,但是我无法使其在我的(稍微复杂一些的)代码中起作用。我已经下班了,所以明天之前我无法检查它,但我想我会搞清楚的=)再次感谢! - Stewie Griffinaxes
对象来实现: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]);
XLim
,则不需要使用linkaxes
;) - Eitan Txlim(ax)
代替 get(ax, 'XLim')
,这样更短。 - Eitan T
XColor
。然而这并不是最好的解决方案,因为你只是在原始图表上叠加了另一组坐标轴,而没有编辑坐标轴标签。 - Doresoom