関数
極方程式
片対数・両対数グラフ
散布図 / scatter plot
3次元グラフ
Contour Plot
Vector Field
横軸・縦軸の範囲を変更する
軸にラベルをつける
グラフの凡例を描画する
凡例(legend)の位置を変える
グリッド線を入れる
一つのウィンドウに複数のグラフを重ねる
一つのウィンドウに複数のグラフを表示する
グラフの保存
グラフの編集
関数
$y = x^2 \sin x$
x = linspace(0,3);
y = x.^2.*sin(x);
plot(x,y)
※注
octave:2> x = 1:10
x =
1 2 3 4 5 6 7 8 9 10
octave:3> x^2
error: for A^b, A must be a square matrix. Use .^ for elementwise power.
octave:3> x.^2 # . を忘れないように! また.と^の間にスペースが入らないように注意。
ans =
1 4 9 16 25 36 49 64 81 100
MathWorks: LaTeX を使用した数式を含むテキスト
極方程式
$r = 3 \cos \theta$
theta = linspace(0,pi);
r = 3*cos(theta);
polar(theta, r)
axis([0 4 -2 2])
横軸・縦軸の範囲を変更する
Function File: axis ([X_lo X_hi])
Function File: axis ([X_lo X_hi Y_lo Y_hi])
Function File: axis ([X_lo X_hi Y_lo Y_hi Z_lo Z_hi])
片対数・両対数グラフ
$y = e^{2x + 1}$
x = linspace(0,10);
y = exp(2*x+1);
semilogx(x,y)
semilogy(x,y)
loglog(x,y)
semilogx: x軸が片対数 |
semilogy: y軸が片対数 |
loglog: 両対数 |
散布図 / scatter plot
x = rand(20);
y = rand(20);
scatter(x,y);
x, yの間隔を等間隔にすれば格子点になる
x = -5:5;
[X,Y] = meshgrid(x)
scatter(X,Y,"g", '.');
3次元グラフ
t = linspace(0,10*pi);
x = cos(t);
y = sin(t);
plot3(x,y,t)
$z = \sin ^2 x \cos y$
x = linspace(-10,10);
y = linspace(-10,10);
[xx, yy] = meshgrid(x,y);
z = sin(xx).^2.*cos(yy);
mesh(x,y,z)
surf(x,y,z)
mesh |
surf |
Contour Plot
$z = x^2 + y^2$
x = linspace(-5,5);
y = x;
[X,Y] = meshgrid(x,y);
z = X.^2 + Y.^2;
contour(z), colorbar;
contourf(z), colorbar;
contour3(z), colorbar;
contour |
$\vec{F} = \frac{\hat{\mathbf{r}}}{r^2}$
[x,y] = meshgrid(-5:5);
quiver(x,y,x./(x.^2+y.^2).^(3/2),y./(x.^2+y.^2).^(3/2))
横軸・縦軸の範囲を変更する
Function File: axis ([X_lo X_hi])
Function File: axis ([X_lo X_hi Y_lo Y_hi])
Function File: axis ([X_lo X_hi Y_lo Y_hi Z_lo Z_hi])
軸にラベルをつける
plot(x,y)
xlabel('x label')
ylabel('y label')
# zlabel('z label')
グラフの凡例を描画する
plot(x,y)
legend('Line')
#legend('boxoff') # 凡例の外枠が消える
複数のlegendをつける
plot(x,y1, 'b')
hold on
plot(x,y2,'r')
legend('Blue', 'Red')
などとすれば良い。プロットした順に凡例をつける。
凡例(legend)の位置を変える
x = linspace(0,10)
y = x.^2
plot(x,y)
legend('hoge', 'location', 'north')
north 中央上
south 中央下
east 中央右
west 中央左
northeast 右上(デフォルト)
northwest 左上
southeast 右下
southwest 左下
GNU Octave: Plot Annotations
グリッド線を入れる
plot(x,y)
grid on
grid minor on
一つのウィンドウに複数のグラフを重ねる
plot(x1,y1)
hold on (or hold all)
plot(x2,y2)
plot(x3,y3)
・・・
一つのウィンドウに複数のグラフを表示する
subplot(3,2,1) # subplot(row,column,index)
plot(x1,y1)
subplot(3,4,2)
plot(x2,y2)
・・・
グラフの保存
PNGで保存
print -dpng hoge.png
PDFで保存
print -dpdf hoge.pdf
figure 3のグラフを保存する場合
print(3,'hoge.pdf','-dpdf')
グラフの編集
作ったグラフをTeXに挿入するなら
Octaveで出力したグラフをTeXに挿入するまでの手順
or
MATLAB/OctaveのグラフをTikZ形式に変換
グラフ中に矢印やらテキストを挿入するなら
とりあえずプロット --> PDFやSVGで保存 --> LibO Draw + TeXMathsで編集
という流れがやりやすい方法なのではないかと
x = linspace(0,3);
y = x.^2.*sin(x);
plot(x,y)
xlabel('x label')
ylabel('y label')
print('sample.pdf', '-dpdf')
% print('sample.svg', '-dsvg')
※PDFで出力すると余白が異常にあるのでpdfcrop等でカットすると良い。でも編集する時には余白があったほうが編集しやすいので、編集後PDFとしてエクスポートしたあとにpdfcropしたほうがいい
SVGよりPDFのほうが編集しやすい
なんかよくわからないけど、この時点でxlabelとかも編集できる(フォント変えたり、フォントの大きさ変えたり、消去したり)
グラフの部分はいくつかの要素からなっているっぽいので細かい編集をする前に、軸ラベルを除いたグラフ全体を選択して
なんかよくわからないけど、この時点でxlabelとかも編集できる(フォント変えたり、フォントの大きさ変えたり、消去したり)
グラフの部分はいくつかの要素からなっているっぽいので細かい編集をする前に、軸ラベルを除いたグラフ全体を選択して