2015-11-14 12 views
4

Когда вы используете функцию plot в Matlab, вам представлены оси y и x слева и внизу соответственно. Но я хотел бы ось х, чтобы ударить по центру фигуры со шкалами и цифрами, как так:Изменить положение оси x

enter image description here

Я прошу прощения у моих любительских навыков рисования. Но в основном я хочу, чтобы ось х двигалась вверх, например, и я хочу иметь номера там и те небольшие удары, как указано на красной строке, но все вправо, но я не хочу, чтобы число под каждым «удар» всего лишь целые числа. Я попытался ответить Google, но ничего не нашел.

Очевидно, что я не хочу двух осей по оси x, поэтому в идеале один снизу исчезнет.

ответ

3

Как правило, помимо некоторых уродливых хакерских решений (можно найти на FEX), функциональность, которую вы хотите, не применима в Matlab. И это не похоже, что он изменился с недавним обновлением. Так что если вы действительно необходимо, сохраните рисунок в качестве векторной графики и отредактируйте его с помощью Inkscape или Illustrator или просто нарисуйте его с помощью латекса/pgfplots/Matlab2Tikz с самого начала.

Однако обновление 2014b графического движка ввело следующее решение, используя undocumented features. Может быть, этого уже достаточно, я осмелюсь сказать, что это самое близкое, что вы можете получить без кодирования ручек.

Matlab R2014b или более поздняя версия обязательна!

%// example 
t = linspace(0,4*pi); 
plot(t,sin(t)) 
ylim([-1.5,1.5]); xlim([0,4*pi]); 

%// get handle 
h = gca; 

%// modify y-axis 
h.YBaseline.BaseValue = 0.5; 
h.YBaseline.Visible = 'on'; 
h.XRuler.Axle.Visible = 'off'; 

%// modify x-axis 
h.XBaseline.BaseValue = 2; 
h.XBaseline.Visible = 'on'; 
h.YRuler.Axle.Visible = 'off'; 

enter image description here

+0

довольно хорошо :) Это то, что один из моих друзей найдено: http://www.mathworks.com/matlabcentral/fileexchange/10473-plotaxisatorigin –

0

Это немного сложнее, чем ожидалось, потому что Matlab не предоставляет эту функцию. Вы можете просто сделать это вручную, вычерчивая линии и отключая исходные оси.

Я нашел пример на Matlab Central

t=linspace(0,10,100);plot(t,sin(2*pi*t)); 
axis([-10 10 -1 1]); 

y=get(gca,'ytick'); 
x=get(gca,'xtick'); 
hold on 
Lx=line([x(1) x(11)],[0 0]); 
Ly=line([0 0],[y(1) y(11)]); 
set(Lx,'color',[1 0 0]); 
set(Ly,'color',[1 0 0]); 
for i=1:length(x) 
    plot(x(i),0,'k*',0,y(i),'k*'); 
    text(x(i),-.05,num2str(x(i))); 
    text(-1,y(i),num2str(y(i))); 
end 
set(gca,'yticklabel',[],'xticklabel',[],'ytick',[],'xtick',[]); 
set(gca,'visible','off') 

matlab figure

но вы должны также проверить на fileexchange как есть, вероятно, некоторые лучшее решение уже вокруг.

Смежные вопросы