ujimushi(@旧sradjp(15364))の日記

旧スラドの日記の引越先です

grid* (Plots.jl(GR))

Plots.jlのGRバックエンド,アトリビュート探訪し続けるこのシリーズ。今回はgrid関連のアトリビュートです。

gridgridalphagridlinewidthgridstyleアトリビュートを試してみます。

grid

設定できる値はAxis Attributes

Show the grid lines ? true, false, :show, :hide, :yes, :no, :x, :y, :z, :xy, ..., :all, :none, :off.

と書いているけどGRのバックエンドがどれだけ対応しているか?実際に設定して確認してみます。 まずは,軸指定なし。

using Plots
import GR
gr()

plot(
    plot(sin; grid=true, title="grid=true"),
    plot(sin; grid=false, title="grid=false"),
    plot(sin; grid=:show, title="grid=:show"),
    plot(sin; grid=:hide, title="grid=:hide"),
    plot(sin; grid=:yes, title="grid=:yes"),
    plot(sin; grid=:no, title="grid=:no"),
    plot(sin; grid=:x, title="grid=:x"),
    plot(sin; grid=:y, title="grid=:y"),
    plot(sin; grid=:xy, title="grid=:xy"),
    plot(sin; grid=:all, title="grid=:all"),
    plot(sin; grid=:none, title="grid=:none"),
    plot(sin; grid=:off, title="grid=:off");
    size=(600, 900), titlelocation=(0.5, 0.5),
    legend=false, layout=(4, 3), gridalpha=0.8
)
savefig("grid.png")

軸指定なしの例を確認すると,どうも:show:yesの動きがあやしそうです。 それ以外は意図した動きに見えます。 :yとか:xとか軸指定でなくても個別に設定できるのは便利かもしれません。

なお,デフォルトはtrueなので,何も設定しない時は「表示」です。

次はそれぞれの軸指定を組み合わせてみます。

using Plots
import GR
gr()

plot(
    plot(sin; xgrid=true, ygrid=false,
         title="xgrid=true\nygrid=false"),
    plot(sin; xgrid=:hide, ygrid=:show,
         title="xgrid=:hide\nygrid=:show"),
    plot(sin; xgrid=:yes, ygrid=:no,
         title="xgrid=:yes\nygrid=:no"),
    plot(sin; xgrid=:x, ygrid=:x,
         title="xgrid=:x\nygrid=:x"),
    plot(sin; xgrid=:y, ygrid=:y,
         title="xgrid=:y\nygrid=:y"),
    plot(sin; xgrid=:xy, ygrid=:xy,
         title="xgrid=:xy\nygrid=:xy"),
    plot(sin; xgrid=:all, ygrid=:none,
         title="xgrid=:all\nygrid=:none"),
    plot(sin; xgrid=:off, ygrid=:all,
         title="xgrid=:off\nygrid=:all"),
    size=(600, 800), titlelocation=(0.5, 0.5),
    legend=false, layout=(4,2), gridalpha=0.8,
    topmargin=(-10, :mm)
)
savefig("xygrid.png")

これを見ると,やはり:showは効かなそうです。 xgrid=:yesが効かないところを見ると,:yes:yと認識されてそうな気がします。

ygrid=:xが効かないとかは想像通りです。軸指定で軸のシンボルを設定するのは, あえて設定すべき値ではない気がします。

gridalpha

軸の不透明度を設定します。0.1が透明っぽくて,0.9と1に近づくほど透明でない感じの値を設定します。

別名

とかプロパティの中にαが入っているのが面白いです。

  • ga, galpha, gopacity, gridopacity,

以下に例を示します。

面白いと思うのはグリッドの方がグラフの線より上に描画されているところです。

using Plots
import GR
gr()

plot(
    plot(sin; gridalpha=0.1, title="gridalpha=0.1"),
    plot(sin; gridalpha=0.5, title="gridalpha=0.5"),
    plot(sin; gridalpha=0.9, title="gridalpha=0.9"),
    plot(sin; xgridalpha=0.1, ygridalpha=0.9,
         title="xgridalpha=0.1\nygridalpha=0.9"),
    plot(sin; xgridalpha=0.9, ygridalpha=0.1,
         title="xgridalpha=0.9\nygridalpha=0.1");
    layout=(3, 2),
    size=(900, 600), titlelocation=(0.5, 0.5), legend=false
)

savefig("gridalpha.png")

当然x, y別に設定できるようです。

gridlinewidth

グリッド線の太さを指定します。

別名

  • grid_linewidth, grid_lw, grid_width, gridlinewidth, gridlw, gridwidth

太いと線の色が濃く感じるので,gridalphaとあわせて調整する感じでしょうか? 次が使用例です。

using Plots
import GR
gr()

plot(
    plot(sin; gridlinewidth=1.0, title="gridlinewidth=1.0"),
    plot(sin; gridlinewidth=3.0, title="gridlinewidth=3.0"),
    plot(sin; gridlinewidth=5.0, title="gridlinewidth=5.0"),
    plot(sin; xgridlinewidth=0.1, ygridlinewidth=3.0,
         title="xgridlinewidth=0.1\nygridlinewidth=3.0"),
    plot(sin; xgridlinewidth=3.0, ygridlinewidth=0.1,
         title="xgridlinewidth=3.0\nygridlinewidth=0.1");
    layout=(3, 2),
    size=(900, 600), titlelocation=(0.5, 0.5), legend=false,
    gridalpha=0.5
)

savefig("gridlinewidth.png")

gridstyle

グリッドのスタイルを指定します。

別名

grid_linestyle, grid_ls, grid_style, gridlinestyle, gridls, gridstyle

次が使用例です。公式サイトに例示されているアトリビュートは全て利用可能のようです。

using Plots
import GR
gr()

plot(
    plot(sin; gridstyle=:auto, title="gridstyle=:auto"),
    plot(sin; gridstyle=:solid, title="gridstyle=:solid"),
    plot(sin; gridstyle=:dash, title="gridstyle=:dash"),
    plot(sin; gridstyle=:dot, title="gridstyle=:dot"),
    plot(sin; gridstyle=:dashdot, title="gridstyle=:dashdot"),
    plot(sin; gridstyle=:dashdotdot, title="gridstyle=:dashdotdot"),
    plot(sin; xgridstyle=:dash, ygridstyle=:dot,
         title="xgridstyle=:dash\nygridstyle=:dot"),
    plot(sin; xgridstyle=:dashdot, ygridstyle=:dashdotdot,
         title="xgridstyle=:dashdot\nygridstyle=:dashdotdot"),
    layout=(4, 2),
    size=(900, 600), titlelocation=(0.5, 0.5), legend=false,
    gridalpha=0.8, gridlinewidth=1.0
)

savefig("gridstyle.png")