y軸に目盛りをつける
土台のグラフのy軸に目盛りをつけます。
ylimsを使って縦の範囲を0から4に指定し、yticks=0:1:4で「0から4まで1刻み」で目盛りを表示します。
using Plots # Plotsを使う宣言
# 1. 表示したいグラフの範囲を変数に代入する
x_min, x_max = -5, 5 # X軸で最小-5、最大5の範囲に設定
# 2. グラフの土台用に空のプロットを作成する
plot([],[], # 「空のデータ」を渡して、枠組みだけ作る
xlims=(x_min, x_max), # 横の範囲
ylims=(0, 4), # 縦の範囲
xticks=x_min:1:x_max, # 横軸(x軸)の目盛りを1刻みにする
yticks=0:1:4, # y軸の目盛りを0から4まで1刻みで表示する
grid=:x, # x軸の目盛りから伸びるグリッド線を表示する
gridalpha=0.3, # グリッドの透明度
gridstyle=:dash, # グリッドを点線にする
size=(600, 200), # 画像のサイズ
label="", # ラベル(今の段階では非表示)
legend=false, # 凡例をオフにする
)
y軸から横向きのグリッド線を追加します。
grid=:bothで縦方向だけでなく横方向のグリッド線も表示します。
using Plots # Plotsを使う宣言
# 1. 表示したいグラフの範囲を変数に代入する
x_min, x_max = -5, 5 # X軸で最小-5、最大5の範囲に設定
# 2. グラフの土台用に空のプロットを作成する
plot([],[], # 「空のデータ」を渡して、枠組みだけ作る
xlims=(x_min, x_max), # 横の範囲
ylims=(0, 4), # 縦の範囲
xticks=x_min:1:x_max, # 横軸(x軸)の目盛りを1刻みにする
yticks=0:1:4, # y軸の目盛りを0から4まで1刻みで表示
grid=:both, # 【変更】縦方向と横方向のグリッド線を表示
gridalpha=0.3, # グリッドの透明度
gridstyle=:dash, # グリッドを点線にする
size=(600, 200), # 画像のサイズ
label="", # ラベル(今の段階では非表示)
legend=false, # 凡例をオフにする
)
格子状のグリッドを表示するグラフができました。
斜めの直線を表示してみましょう。x軸、y軸0から、x軸、y軸4に向けて直線を引いてみます。土台のグラフのコードに以下のコメント3以降を付け加えます。
# 3. 0から4までの斜めの矢印をプラス側(右上)に向けて引く
plot!([0, 4], [0, 4], # 【x=[0, 4] 、y=[0, 4] に設定
line=(:solid, 2, :blue),
label="" # ラベル(今の段階では非表示)
)
この直線はy=xを表したものになります。
座標を作る
0を中心としたグラフを座標の形式に直してみましょう。
その1. 変数を代入して範囲を指定する方法。
using Plots # Plotsを使う宣言
# 1. 表示したいグラフの範囲を変数に代入する
x_min, x_max = -5, 5 # x軸の最小値と最大値を設定
y_min, y_max = -5, 5 # y軸の最小値と最大値を設定
# 2. グラフの土台用に空のプロットを作成する
plot([],[], # データは渡さず枠組みだけ作る
xlims=(x_min, x_max), # x軸の表示範囲
ylims=(y_min, y_max), # y軸の表示範囲
xticks=x_min:1:x_max, # x軸の目盛りを1刻みにする
yticks=y_min:1:y_max, # y軸の目盛りを1刻みにする
grid=:both, # 縦方向と横方向にグリッド線を表示
gridalpha=0.3, # グリッドの透明度
gridstyle=:dash, # グリッドを点線にする
size=(500, 500), # 画像のサイズを正方形に設定
legend=false # 凡例をオフにする
)
# 3. 原点(0,0)を通る中央の軸線を引く
hline!([0], line=(:black, 1), label="") # y=0の高さに黒い横線(x軸)を引く
vline!([0], line=(:black, 1), label="") # x=0の位置に黒い縦線(y軸)を引く
その2. Framestyle属性を使った方法。
framestyleには複数の表示形式が用意されています。今回は2種類紹介します。
2-1. zerolines
plot([],[], # データは渡さず枠組みだけ作る
xlims=(-5, 5), # x軸の表示範囲を-5から5に指定
ylims=(-5, 5), # y軸の表示範囲を-5から5に指定
xticks=-5:1:5, # x軸の目盛りを1刻みにする
yticks=-5:1:5, # y軸の目盛りを1刻みにする
grid=:both, # 縦方向と横方向にグリッド線を表示
gridalpha=0.3, # グリッドの透明度
gridstyle=:dash, # グリッドを点線にする
size=(500, 500), # 画像のサイズを正方形に設定
legend=false, # 凡例をオフにする
framestyle=:zerolines, #【追加】framestyleを指定する。枠の外に目盛りをつけるzerolinesで設定
)
2-2. origin
plot([],[], # データは渡さず枠組みだけ作る
xlims=(-5, 5), # x軸の表示範囲を-5から5に指定
ylims=(-5, 5), # y軸の表示範囲を-5から5に指定
xticks=-5:1:5, # x軸の目盛りを1刻みにする
yticks=-5:1:5, # y軸の目盛りを1刻みにする
grid=:both, # 縦方向と横方向にグリッド線を表示
gridalpha=0.3, # グリッドの透明度
gridstyle=:dash, # グリッドを点線にする
size=(500, 500), # 画像のサイズを正方形に設定
legend=false, # 凡例をオフにする
framestyle=:origin, #【追加】framestyleを指定する。座標軸に目盛りをつけるoriginで設定
)
framestyle=:zerolines は通常のグラフに原点を通る軸線を追加した表示です。
framestyle=:origin は原点を中心とした座標軸として表示され、目盛りも軸上に配置されます。
使用例
グラフ内に関数式を可視化させてみました。今回はxに配列を使っているため、配列の各要素に対して計算を行うために演算子の前へ .(ドット)を付けます。
annotateを使ってグラフ内の任意のx、yの位置に式を文字で表示させています。
text("y = 2x + 2", 10, :blue, :center) の場合
"y = 2x + 2" : 表示する文字式
10 : フォントサイズ
:blue : 文字の色
:center : 基準位置の揃え方(指定した座標 (-3.5, -2) を中心にして表示)
となります。
using Plots
# 1. グラフの土台(原点交差の軸)を作成
plot([],[],
xlims=(-5, 5), # x軸の表示範囲を-5から5に指定
ylims=(-5, 5), # y軸の表示範囲を-5から5に指定
xticks=-5:1:5, # x軸の目盛りを1刻みにする
yticks=-5:1:5, # y軸の目盛りを1刻みにする
grid=:both, # 縦方向と横方向にグリッド線を表示
gridalpha=0.3, # グリッドの透明度
gridstyle=:dash, # グリッドを点線にする
size=(500, 500), # 画像のサイズを正方形に設定
legend=false, # 凡例をオフにする
framestyle=:zerolines # 中央交差の軸にする
)
# 2. 1次関数 y = 2x + 2 の式のグラフを追加
# xの範囲 [-5, 5] に対する y の値を計算
x = [-5, 5]
y = 2 .* x .+ 2
plot!(x, y,
line=(:solid, 2, :blue), # 青い線
label=""
)
# 3. 2次関数 y = x^2 - 2 の式のグラフを追加
# xを-5から5まで細かく刻んで(100等分)なめらかな曲線にする
x = range(-5, 5, length=100)
y = x .^ 2 .- 2 # 配列の各要素を2乗して2を引く演算子
plot!(x, y,
line=(:solid, 2, :red), # 赤い線
label=""
)
# 4. グラフ内への数式表示を追加
annotate!(-3.5, -2, text("y = 2x + 2", 10, :blue, :center)) # x-3.5、y-2の位置に青い字で式の表示(y = 2x + 2の式)
annotate!(3, 1, text("y = x^2 - 2", 10, :red, :center)) # x3、y1の位置に赤い字で式の表示(y = x^2 - 2の式)
framestyleはoriginの方が一般的な座標平面に近い表示になります。
ただし、今回のようにannotateで数式や説明文を追加する場合は、中央付近が混み合うためzerolinesの方が見やすい場合があります。
LaTexでの表示
LaTeX(数式を綺麗に表示するための表記法)を使うと、数学記号を見やすく表示できます。
import Pkg; Pkg.add("LaTeXStrings")でLaTeXのパッケージをインストールして、using LaTeXStringsを追加します。Colabのランタイムがリセットされた場合は、再度パッケージをインストールする必要があります。
annotate!(-3.5, -2, text(L"y = 2x + 2", 10, :blue, :center)) というように、表示する文字列の前に「L」を付けるだけで、LaTeX形式の数式として表示できます。分数や平方根など複雑な数式を書く場合に効果を発揮します。
import Pkg; Pkg.add("LaTeXStrings") # LaTeXパッケージをインストーする
using Plots
using LaTeXStrings # LaTeX文字を使う宣言
# 1. グラフの土台(原点交差の軸)を作成
plot([],[],
xlims=(-5, 5), # x軸の表示範囲を-5から5に指定
ylims=(-5, 5), # y軸の表示範囲を-5から5に指定
xticks=-5:1:5, # x軸の目盛りを1刻みにする
yticks=-5:1:5, # y軸の目盛りを1刻みにする
grid=:both, # 縦方向と横方向にグリッド線を表示
gridalpha=0.3, # グリッドの透明度
gridstyle=:dash, # グリッドを点線にする
size=(500, 500), # 画像のサイズを正方形に設定
legend=false, # 凡例をオフにする
framestyle=:zerolines # 中央交差の軸にする
)
# 2. 関数を描画
x = range(-5, 5, length=100)
y = x .^ 2 .- 2
plot!(x, y, line=(:solid, 2, :blue))
# 3. annotate! で TeX(LaTeX)の数式テキストを追加
# 形式: annotate!(x座標, y座標, text(L"TeXで表示する式", フォントサイズ, 色, 基本位置))
annotate!(2.5, 3.5, text(L"y = x^2 - 2", 12, :blue, :left))
参照
Plots公式マニュアル。
https://docs.juliaplots.org/dev/
今回使ったFramestyleのページ。
https://docs.juliaplots.org/dev/gallery/gr/generated/gr-ref034/
annotateを使用した表示のページ。
https://docs.juliaplots.org/dev/gallery/gr/generated/gr-ref020/
次回は「簡単なアルゴリズムの可視化」をしていきます。







