PythonとBokehを使ってグラフを描く(#2 グラフの見た目変更)

PythonとBokehを使ってグラフを描く方法のまとめ2回目です。今回は簡単なグラフの見た目変更を行います。

サンプルとしては第1回で使用した棒グラフのコードを引き続き使います。

<python>
#使用モジュール宣言
from bokeh.plotting import figure, show

#グラフの要素
#X軸が月、Y軸が気温
x = [1, 2, 3, 4, 5, 6]
y = [2, 1, 6, 12, 16, 21]

#Figureクラスからインスタンスを生成
#グラフのサイズを縦300ピクセル、横300ピクセルに設定
p = figure(width=300, height=300)

#vbarメソッドでグラフを描画
#X軸のデータをx、Y軸のデータをyに設定
p.vbar(x=x, top=y)

#グラフ描画
show(p)
見た目はこんな感じになります。

グラフのサイズ変更

グラフのサイズを変更する場合、figureクラス内のwidthとheightを指定することで変更が可能です。サンプルでは300ピクセル四方としています。

数字を書き換えることで任意のサイズに変更可能です。グラフの形状によって任意の大きさにすると見やすくなると思います。

400ピクセル四方に変更してみました。

棒グラフの幅変更

サンプルの棒グラフは棒と棒の間隔が完全に埋まっているので、いわゆる棒グラフっぽい見た目になっていません。この幅についても自由に調節可能です。

棒の幅はvbarクラスのwidth属性で設定します。デフォルトの設定では1なので、少し細めに0.75に設定してみます。サンプルのコードにはないので追記します。

結構棒グラフっぽい見た目になったのではないでしょうか。

棒グラフの色変更

棒グラフの色を変更します。グラフの色はvbarクラスのfill_color属性で設定します。色に関してはHTMLカラーコードか、CSS文字列でも設定が可能です。今回はHTMLカラーコードでlimegreen(#32cd32)に設定しました。

カラーコードはシングルクォーテーションでくくらないとエラーになってしまうので注意が必要です。

棒グラフの枠線描画

棒グラフの枠線ももちろん変更可能です。枠線の太さはvbarクラスのline_width属性で設定します。デフォルトの太さは1.0となっています。今回は分かりやすくするため3.0に設定しました。

棒グラフの枠線色変更

棒グラフの枠線色はvbarクラスのline_color属性で設定します。fill_color属性同様HTMLカラーコードかCSS文字列で設定可能です。今回の例ではdarkgray(#a9a9a9)に設定しました。

できあがったグラフはこのようになりました。

編集したコードは以下の通りです。

#<python>
#使用モジュール宣言
from bokeh.plotting import figure, show

#グラフの要素
#X軸が月、Y軸が気温
x = [1, 2, 3, 4, 5, 6]
y = [2, 1, 6, 12, 16, 21]

#Figureクラスからインスタンスを生成
#グラフのサイズを縦400ピクセル、横400ピクセルに設定
p = figure(width=400, height=400)

#vbarメソッドでグラフを描画
#X軸のデータをx、Y軸のデータをyに設定
p.vbar(x=x, top=y, width=0.75, fill_color='#32cd32', line_width=3.0, line_color='#a9a9a9')

#グラフ描画
show(p)

以上のように、コード内でパラメータを設定することで表計算ソフト同様にグラフの見た目を自由に変更可能です。

表計算ソフトならGUI上で”グラフの書式設定”のような項目を使って変更できるのでコードで編集するのは大変に感じますが、かなり自由度の高いカスタマイズが可能な点、コードの処理次第で自動的に色を変えるなど見た目の設定を自動化できる点などが優れています。

JR東日本の2023年3月ダイヤ改正

JR東日本の2023年3月ダイヤ改正の情報が出ていました。長野県内においても色々変更があるようなのですが、篠ノ井線の臨時特急新設と、それに伴う信州しなの料金回数券の発売終了が個人的には影響が大きそうに感じました。

篠ノ井線の臨時特急

篠ノ井線の臨時特急については通勤用途を想定して朝は塩尻から長野まで、夜は長野から松本までそれぞれ1本ずつ設定されるということです。臨時特急ということなので、運転日は特定の日に限られるようです。編成はあずさにも使われるE353の3両編成ということで、ちょっと見慣れない編成になりそうです。

信州しなの料金回数券の発売終了

臨時特急の新設に伴い、特急しなのと臨時特急のどちらにも利用できる”篠ノ井線特急料金回数券”が新たに発売されるそうです。区間は長野-塩尻間で4枚つづり、2,780円とのことです。

現行の信州しなの料金回数券は利用できる列車は特急しなののみですが、区間や枚数は同じ条件で2,080円という破格の安さです。今回の再編で実質値上げとなってしまいますが、元々が安かったのでこれもやむなしかなという感はあります。

長野-塩尻間は通常の自由席特急料金だと1,200円なので、値段が上がるとはいえ特急料金回数券はかなりお得な回数券だと思います。中南信方面への輪行の友のようなきっぷなので、来年もまたお世話になる場面があると思います。

大出公園公衆トイレ

国道406号沿いにある公園の公衆トイレです。場所は白馬駅から1kmほどです。鬼無里方面から白沢洞門を越えて山を下ってくると、下りきったところにあります。下りで身体が冷えるとトイレに行きたくなるので、非常にいい立地のトイレです。

男女別
小便器2
個室洋式1
多目的
周辺道路はこんな感じになっています。

トイレ自体は道からちょっと離れているので要注意です。駐輪スペース的なものがないので、いつも自転車をどの辺に置いたものか迷います。

AMD Software Adrenalin Edition 22.11.2がリリース

12/8付けなので少々日が経ってしまいましたが22.11.2がリリースになっています。

AMD Software: Adrenalin Edition 22.11.2 Release Notes

[amd.com]

今回のバージョンはWHQL認証済みということで、いわゆる”安定版”の取り扱いになります。新タイトルとしてはThe Callisto Protocol、Need for Speed Unbound、The Witcher 3: Wild Hunt Next-Gen Updateがリストアップされています。

ホリデーシーズンのドライバ更新は名称変更を伴うような大きなアップデートになることも過去にありましたが、今回は通常のバージョン更新のみということのようです。

ほうれん草の炒め物

冬なので旬の野菜を採用しようと思い、ほうれん草を買いました。ほうれん草はおひたしやごま和えにすることが多いのですが、バリエーションを増やすために今回は炒め物に挑戦してみることにしました。

ほうれんそうのアーリオ・オーリオ

[NHK みんなのきょうの料理]

参考にさせていただいたのは上のレシピで、にんにくと赤唐辛子の風味を移したオリーブオイルでほうれん草を炒めるというものです。

ほうれん草は一旦ゆでてから絞って使うことになるので、気になるシュウ酸カルシウムの影響も少なくて済みそうです。

今まであまり気にしていませんでしたが、ほうれん草は油と相性が非常に良い野菜であることが分かりました。

Radeon RX7900シリーズが発売

12/13よりRadeon RX7900XTXと 7900XTが発売となっています。RDNA3を採用したRadeon RX7000シリーズのハイエンドラインに位置づけられる製品です。

さっそくPC Watchさんにベンチマーク記事が出ていました。

「Radeon RX 7900」の性能をチェック!チップレットでどこまで進化したのか?

[PC Watch]

RX6000シリーズと同様、Nvidia製品に比べてワットパフォーマンスとレイトレーシング性能では後れを取る一方で、価格に対しての性能は状況次第では優秀といった感じのようです。

価格については前世代の6900XT登場時が7900XTXと同じ999ドルで15万円前後だったので、今回の7900XTXの999ドル、実売17万9,800円というのはかなり為替相場の影響を受けている感があります。

ローエンドからミドルレンジ品の充実に期待していますが、前世代より国内価格が高くなってきそうなので心配です。

Insta360 ONE Rのファームウェアアップデート(v2.0.8)

新しい周辺機器に対応した新ファームウェアが公開になっています。リリースノートを見る限り新発売された”充電式自撮り棒”と”GPSリモコン”への対応が主な変更点となっているようです。

新しいGPSリモコンは対応している測位衛星の種類が増えてより高精度なトラックデータが取得できるようになったほか、Bluetoothの規格が5.0になったことでリモート操作できる範囲が広がったということです。

より簡単にカメラ制御を可能にさせるInsta360 GPSアクションリモコン発売

[Insta360 blog]

私はカメラの制御をいつも本体のスイッチで直接行うので、リモコンがあったら便利と思うことはそれほどありませんが、動画と完全に同期したGPSトラックデータの表示ができるというのは魅力的に感じます。

1回サイクルコンピュータで取得したGPSデータを後から合成することを試みたのですが、動画とトラックデータを完全に同期させることが難しく、手作業での限界を感じました。理想的にはこういったファミリー製品で統合的に処理するのが望ましいのだろうと思います。

皆神山

松代の南東方面にある皆神山を訪問しました。皆神山は松代の市街地背後にポツンと独立してそびえている山で、その立地と四角錐のような形状からパワースポットと呼ぶ人もいるとのことです。

車道で頂上付近までアクセスできます。路線としては長野市道松代東339号線という名称です。

路線延長としては1.6kmほどとそこまで長くはないですが、標高差が約200mあります。全線の平均勾配が12%近くあるというかなりの急勾配路線となっています。

頂上付近には皆神神社があります。
Q-S1の電子水準器を水平にして撮影した写真です。全線このような感じです。

実際に登ってみると路面状況がそこまで悪くはないので、純粋に勾配のみが通行における難しさの要因となっています。

急勾配のためかなりゆっくり登っていたところ、遅さが災いしたのかアブや蚊などの刺すタイプの虫に頂上に至るまでずっとまとわりつかれ、非常に苦しい走行となりました。路線全体通して日影が多いということもあって、虫の出る時期は要注意かもしれません。

私はこういった極めて急勾配の路線は好んで走りませんが、大体急勾配路線は路面状況が悪いところが多い中、比較的路面がきれいという点では貴重かもしれません。市街地にも近いので急勾配チャレンジが好きという方にはオススメできそうです。

Powershellでパスを結合する

Powershellを使っていると良くあるのがパスとフォルダ名や、パスとファイル名を結合するという場面です。ほとんどの場合パスやファイル名は変数に格納されているので、結合する時に少々工夫が必要になります。

例として、パスが”C:\hoge”でその中に格納された”piyo.txt”というファイルを開くコードを考えます。そのままパスとファイル名を結合すると間に\が無くて動かないので、何らかの方法で\を入れる必要があります。

力技

単純に文字列結合で行うのであればこんな感じになります。

[Powershell]
###パスとファイル名を結合して実行するスクリプト###
#パス変数
$Path = 'C:\hoge'

#ファイル名変数
$Filename = 'piyo.txt'

#パス結合
$Fullpath = $Path +'\'+ $Filename

#ファイル実行
#Invoke-Item $Fullpath

やっていることの分かりやすさという点では良いと思うのですが、結合する対象が3つ以上になると可読性が著しく悪くなるという難点があります。

Microsoft Learnのドキュメントに参考になる情報があったので、これを見ながら改良してみます。

文字列での変数の代入について知りたかったことのすべて

[Microsoft Learn]

変数を置換して結合

変数が含まれる場合でも、二重引用符でくくることによって変数を置換しつつ文字列結合を行うことができます。

最初のコードを書き換えるとこんな感じになります。

[Powershell]
###パスとファイル名を結合して実行するスクリプト###
#パス変数
$Path = 'C:\hoge'

#ファイル名変数
$Filename = 'piyo.txt'

#変数の置換を使ってパス結合
$Fullpath = "$Path\$Filename"

#ファイル実行
Invoke-Item $Fullpath

必ず二重引用符を使う必要があるというところがちょっと難しいですが、可読性という点では良いのではないかと思います。

Join-Pathコマンドを使う

パス結合用のコマンドがあるので、これを使う方法もあります。ドキュメント内で触れられている通り、この方法は\マークのことを気にしなくていいのが便利です。

[Powershell]
###パスとファイル名を結合して実行するスクリプト###
#パス変数
$Path = 'C:\hoge'

#ファイル名変数
$Filename = 'piyo.txt'

#Join-Pathコマンドを使ってパス結合
Join-Path -Path $Path -ChildPath $Filename

#ファイル実行
Invoke-Item $Fullpath

文字数的には冗長になりますが、パスを結合していることが明瞭なので分かりやすさはかなり優れていると思います。

○○について知りたかったことのすべてシリーズはオススメ

Microsoft LearnにKevin Marquette氏が書いているブログエントリが”○○について知りたかったことの全て”という題名で掲載されているのですが、いずれも非常に参考になります。

powershellexplained.com

[powershellexplained.com]

リファレンスほど難解ではなく、Kevin氏の私見も交えてコマンドや構文が紹介されているので今まで知らなかった記述方法やコマンドを知ることができます。

FL Studio 21がリリース

バージョン21がリリースになりました。バージョン20が出たのは3年前なので、久しぶりの1の位のバージョンアップとなっています。

新要素の紹介動画はていねいなこともあって24分近い大長編となっています。私もさっそくアップデートして新要素をチェックしています。

ブラウザの改良

ファイルやプラグインを検索できるブラウザが非常に使いやすくなりました。レイアウトが自由に変更できるようになったほか、要素にタグやお気に入りのスターをつけることができるようになり、コンテンツの検索性が良くなっています。

また、プラグイン用のライブラリのダウンロードもブラウザ内で行えるようになり、別途手動でコンテンツをダウンロードしてインストールする必要がなくなっています。

サンプル素材はフリーで使える物も多いので、特に何も買わなくてもものすごい数の管理をしなくてはいけません。ブラウザの検索性が良くなったことで、今まで埋もれていたお気に入り素材が発見できたりするのではないかと期待をしています。

新プラグイン

新しいプラグインとしてはリバーヴのLuxeverb、フェイザーのVintage Phaser、ディレイのMultiband Delay、そしてシーケンサーのVFX Sequencerが追加されています。

ディレイは周波数ごとにディレイの効き具合などを調整できるプラグインということで、パイオニアのDJ用エフェクターの様な雰囲気があります。DTM用だけあってかなり極端なパラメーター設定が可能で、単にディレイとしてではなく音色ごと変更するプラグインとしても利用可能です。

テーマカラー

画面全体の配色を設定できる機能が追加されています。FL Studioと言えば伝統的に明るめのグレー基調の配色がおなじみですが、プリセットには白基調のものなども用意されています。

気分が変わっていいかなと思って白基調のものを試してみましたが、私にはまぶしく感じてイマイチでした。デフォルトのカラーをちょっと変更して自分好みに使うくらいでも楽しいと思います。