Вот простой способ сделать это:
% somthing to plot:
x = 0:0.1:2*pi;
y = abs(sin(x)+cos(x));
plot(x,y)
% get the handle for the current axes:
ax = gca;
% get the position of the zero tick on y-axis:
zeroYtick = ax.YAxis.TickValues==0;
% remove it (tick and lable)
ax.YAxis.TickValues(zeroYtick) = [];
Результат:
Если вы хотите, чтобы 0
был смещен немного, чтобы левая, так что это будет в углу участка, вы можете использовать аннотацию:
% get the position of the zero tick on x-axis:
zeroXtick = ax.XAxis.TickValues==0;
% remove it (tick and lable)
ax.XAxis.TickValues(zeroXtick) = [];
% place a new zero at the origin:
dim = [0.1 0.01 0.1 0.1];
annotation('textbox',dim,'String','0',...
'FitBoxToText','on','LineStyle','none')
И вы получите:
Преимущество annotation
в том, что происхождение всегда помещается относительно угла осей, и вам не нужно знать значения галочек осей, чтобы должным образом компенсировать их.
EDIT:
Для предварительной версии 2016a вы можете использовать следующее (я написал это немного более компактный):
ax = gca;
% remove the zero tick on y-axis (tick and lable):
ax.YTick(ax.YTick==0) = [];
% remove the zero tick on x-axis (tick and lable):
ax.XTick(ax.XTick==0) = [];
% place a new zero at the origin:
dim = [0.1 0.01 0.1 0.1];
annotation('textbox',dim,'String','0',...
'FitBoxToText','on','LineStyle','none')
EDIT 2:
Другая возможность для k eep 0
на месте - это привязать его к осям. это делается путем замены Parent
на ось. Во-первых, нам нужен дескриптор аннотации (продолжение последнего редактирования):
t = annotation('textbox',dim,'String','0',...
'FitBoxToText','on','LineStyle','none');
затем включим Parent
и установить новую позицию:
t.Parent = ax;
t.Position(1:2) = -[0.2 0.1];
и, наконец, мы супер-клеить путем преобразования Units
в пиксели:
t.Units = 'Pixels';
Это именно то, что я хочу, а именно «0», чтобы быть смещенным от небольшого влево. Аннотации, похоже, делают трюк, но если вы затем измените размер фигуры, движется «0». Кроме того, я предполагаю, что вы на какой-то версии позже 2014b, потому что графические дескрипторы разные. У меня нет ручки для ax.XAxis и т. Д. Но это на самом деле не матер, я могу удалить метки ярлыков, правильно комментируя '0', где я застреваю. – Brian
@Brian. Если вы слишком сильно сжимаете фигуру, то '0' неправильно настроен, в противном случае я могу изменить его размер настолько, насколько я хочу, и он придерживается своего места. Во всяком случае, я добавил версию кода для более ранних версий Matlab. – EBH
изменение размера по-прежнему перемещает '0' в мою систему. Я не уверен, что у вас разные настройки, если они не на вашем, но как только я изменил размер фигуры, аннотированный «0» сдвинется вокруг, чтобы не быть расположенным в начале координат (обратите внимание, что это происходит, даже если фигура слегка измененный размер). Я, безусловно, ценю ответ, но поскольку он не совсем делает то, что я ищу. Я попытался добавить аннотацию после изменения размера фигуры с тем же результатом и попытался изменить размер как с единицами оси в нормализованных, так и в физических единицах. – Brian