全部覚えている訳ではないので,個人的には日常的にすごく役に立っている Plots.jlの個別のアトリビュートの使用例を残すこのシリーズ。
今回は(ようやく)よく使うtitle
に関する内容です。
title
title
で図のタイトルの文字列を指定します。
subplot
に関するアトリビュートで,全体のタイトルはplot_title
に相当します。
なのでうっかり次のような感じにしてしまうと,全てのsubplotのタイトルがABCD
になります。
using Plots gr() plts = [plot(sin, title=k) for k in ["A", "B", "C", "D"]] plot(plts...; title = "ABCD") savefig("ABCD.png")
最後のplotの時にplot_title
を指定するのが正解です。
using Plots gr() plts = [plot(sin, title=k) for k in ["A", "B", "C", "D"]] plot(plts...; plot_title = "ABCD") savefig("ABCD_correct.png")
追記(デフォルト)
デフォルトは""
(空文字列)です。うっかり,nothing
や:none
とかを指定すると,文字列に変換して表示してしまうので注意が必要かもしれません。
titlefontfamily
次項以降日本語を表示させる関係上,タイトルのフォントの種類を指定するtitlefontfamily
アトリビュートだけ先に紹介します。
別名はtitlefontfamilys
しかありません。使用例を次に示します。
using Plots gr() names = [:titlefontfamily, :titlefontfamilys] props = ["ipam", "ipag"] plts = [plot(sin; title="タイトル:\n $n = $p", NamedTuple{(n,)}((p,))...) for (n, p) in zip(names, props)] plot(plts...; layout=(2, 1)) savefig("titlefontfamily.png")
追記(デフォルト)
デフォトルはfontfamily
で指定したものとなり,fontfamily
で指定しない場合はsan-serif
です。
しかし,legend_fontfamily
等のこれまでの記事の説明でこのことについての記載を忘れているような気がします。
titlelocation
次にタイトルの位置を示すtitlelocation
です。
といっても,Plots.jlの場合はタイトルは図の上部にしか指定できません。そのため,titlelocation
の指定といっても上部の真ん中か左か右かの三通りです。
面倒なので,別名もサンプルのソースリストの中に提示します。pos_names
の各要素です。
非常に別名数が多いです。
なお,Symbol型なので,実際にソースに記述する時はグラフ上の表示のように
titlelocation=:left
のような感じで指定して下さい。
using Plots gr() default(titlefontfamily="ipag") pos_names = [ :titlelocation, :title_align, :title_alignment, :title_loc, :title_location, :title_pos, :title_position, :titlealign, :titlealignment, :titleloc, :titleloction, :titlelocations, :titlepos, :titleposition ] pos_props = [ :left, :center, :right, :left, :right, :left, :right, :left, :right, :left, :right, :left, :center, :right ] plts = [plot(sin; title="タイトル:\n $n = $p", NamedTuple{(n,)}((p,))...) for (n, p) in zip(pos_names, pos_props)] plot(plts..., size=(800, 1100), layout=(7,2)) savefig("titlelocation.png")
見て分かる通り,titlefont[vh]align
も同時に変更されているような挙動です。
懸念される(?)のはtitlefont[vh]align
が効くかどうか?,次項で試してみます。
titlefont[vh]align(設定が反映しない)
結論からいうと設定しても変わりません。次のソースで検証してみます。
using Plots gr() default(titlefontfamily="ipag") plops_h = [:left, :center, :right] plops_v = [:vcenter, :top, :bottom, :center] plts = [ plot(sin; title="タイトル:\n $x, $y", titlefonthalign=x, titlefontvalign=y) for x in plops_h, y in plops_v] plot(plts..., size=(800, 1100), layout=(4, 3)) savefig("titlefontvhalign.png")
どの指定をしてもcenter
扱いになっています。タイトル:
のところを比較すれば分かりやすいでしょう。
titlefont(color|size|rotation)
残りのプロパティtitlefontcolor
,titlefontsize
,titlefontrotation
です。
基本的に今までのフォント系の設定方法と同じです。
別名は最後にs
がついているものしかないので,種類はそれほど多くありません。
使用例を示します。
using Plots gr() default(titlefontfamily="ipag", titlefontsize=10) names = (:titlefontcolor, :titlefontcolors, :titlefontcolor, :titlefontcolors, :titlefontsize, :titlefontsizes, :titlefontrotation, :titlefontrotation ) props = (:red, "blue", colorant"#ff00ff", RGB(0.0, 1.0, 0.0), 8, 14, 30.0, 330.0) plts = [plot(sin; title="タイトル:\n $n = $p", NamedTuple{(n,)}((p,))...) for (n, p) in zip(names, props)] plot(plts...; layout=(4, 2), size=(800, 1100)) savefig("titlefont_color_size_rotation.png")
自動だと表示範囲をはみ出すので,titlefontrotation
は
そのままでは使いものにならないような気がします。
色の指定方法自体は以前の記事legend_font_color
とかで説明しているので,
そちらの方が説明が分かりやすいかもしれません。
その他気がついたこと
titlefontf
というアトリビュートはありません。
そのため,今回の記事で示したアトリビュート属性を変更する必要があります。