2017-01-25 18 views
0

に平行に、20,30、...、100Matlabの:プロットラインは、私はすべての行は、x = 10とy軸に平行にプロットしたいy軸

私のようにXを書いた:

x=linspace(1,100,10); 

とIこのようにプロットしてみ:

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

が、これはうまく動作しません。どのようにyを書き、そのような行をプロットすることができますか?

+0

あなたは、x = 10、20 ,, ...、100と言うものの 'linspace(1,100,10)は、' 1で開始値を持つベクトルを作成します。このようにして、 'linspace(10,100,10);'または単に '10:10:100' – NLindros

答えて

1

あなたは正しい考えがありますが、行末のx座標とy座標の両方が間違っています。 xの場合は、

x = 10:10:100; 

を生成する必要があります。一方、linspace(1, 100, 10)は、1と100の間の10の等間隔の値を生成します。これは若干異なります。 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

を使用し、x軸に平行な線はx = 10,20,30、... 100ではないが、 x = 11,25について少し大きめです... – user3582433

+0

これは 'linspace'の使い方のためです。そこにもエラーがあります、私は答えを編集します。 – buzjwa

1

これは正確にあなたの質問に答えるものではありませんが、あなたが探しているものかもしれません。

Y軸に平行な線を作成(サポート)するには、XGridプロパティを使用します。

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

または古いMatlabのバージョン

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

(あなたは軸がaxを処理していない場合、あなたはgcaを使用することができます)

ため、このプロットの現在のXTickのラインを作成します。あなたはグリッド線に特定の範囲を持っているしたい場合は、のXTick

ax.XTick = 0:10:100; 

を変更する必要がありますが、ラインが弱い(見えにくい)にあると思われる場合、あなたは値アルハグリッドを上げることができます(デフォルト値0.5)。

ax.GridAlpha = 1; % 

は、色は

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

私もこれを使っています:)しかし、それは柔軟なIMOではありません。 – buzjwa

関連する問題