2017-01-25 11 views
0

Я хочу, чтобы построить все линии, параллельные оси у с х = 10, 20,30, ..., 100Matlab: сюжетные линии параллельно оси у

Я написал х как:

x=linspace(1,100,10); 

, и я пытаюсь построить таким образом:

figure(1) 
plot([x; x], [zeros(1, length(x))*min(ylim); ones(1, length(x))*max(ylim)],'r') 

, но это не очень хорошо работает. Как написать y для построения таких строк?

+0

Вы говорите, что х = 10, 20 ,, ..., 100, но 'LINSPACE (1,100,10);' создать вектор с начальным значением в 1. Вы должны использовать 'linspace (10,100,10);' или лучше просто '10: 10: 100' – NLindros

ответ

1

У вас есть правильная идея, но и ваши x-координаты, и y-координаты для контуров строк неверны. Для х, вы должны использовать:

x = 10:10:100; 

Это создает [10, 20, ..., 100]. linspace(1, 100, 10), с другой стороны, генерирует 10 одинаково разнесенных значений от 1 до 100, что несколько отличается. Чтобы получить те же значения, используя linspace, вы бы сделали linspace(10, 100, 10).

Для y, поскольку вы используете zeros, линия простирается от нуля до верхнего предела y, а не от нижнего к верхнему пределу. Ваш звонок должен быть вместо этого:

plot([x; x], repmat(ylim', 1, numel(x)), 'r') 

Это повторяет границы по оси Y для каждой линии, поэтому i -м линия рисуется от (x(i), ylim(1)) к (x(i), ylim(2)).

+0

таким образом, что линии, параллельные оси y, не имеют x = 10,20,30, ... 100, но имеют xa немного больше о x = 11,25 ... – user3582433

+0

Это из-за того, как вы используете 'linspace'. Там тоже есть ошибка, я отредактирую ответ. – buzjwa

1

Это точно не отвечает на ваш вопрос, но может быть и то, что вы ищете.

Используйте свойство XGrid для создания (поддержки) линий, параллельных оси Y.

ax = axes; 
ax.XGrid = 'on'; 

или для более старых версий Matlab

set(ax, 'XGrid', 'on') 

(Если вы не имеете оси обрабатывать ax, вы могли бы использовать gca)

Это создавать строки в текущем XTick участка , Если вы хотите иметь линии сетки определенный диапазон, вы должны изменить XTICK

ax.XTick = 0:10:100; 

Если вы считаете, что линии являются слабыми (трудно увидеть), вы можете повернуть вверх значение сетки Alha (значение по умолчанию 0,5).

ax.GridAlpha = 1; % 

или цвет его

ax.GridColor = 'r'; % Set grid color to red 
+0

Я тоже пользуюсь этим :) Но это не так гибко ИМО. – buzjwa