投稿

1月, 2019の投稿を表示しています

空模様(2018年12月23日〜12月29日)を映したタイムラプス動画

イメージ
2018年12月23日〜12月29日の空模様を映したタイムラプス動画を Youtubeにアップロードしました。 アップロードした動画は一週間分まとめたものになっています。 以下、Youtube動画内の各日付へのリンクと天気など情報になります。 12月23日 日曜日 おおむね曇り 12月24日 月曜日 曇り時々晴れ 12月25日 火曜日 晴れのち曇り 12月26日 水曜日 晴れ時々曇り 12月27日 木曜日 曇り時々晴れ 12月28日 金曜日 おおむね雪 12月29日 土曜日 おおむね雪

gnuplotで文字列変数に入れてある文をコマンドとして差し込む方法(@を変数名の前に付ける)

gnuplotで文字列変数と言えば、文字列としてファイル名、ラベルやタイトルなどで使われます。今回紹介するのはそれとはやや異なり、コマンド文に文字列変数を差し込んで(置換して)使うという方法です。文字列変数だけでは使える範囲が限られますが、紹介する方法ではもっと適用範囲を広げて文字列の差し込みとして使うことが出来ます。 例として gnuplot> plot 'test01.dat' using 1:4 with linespoints というコマンド文で見てみることにします。 ここで文字列変数text01を以下のように作成します。 gnuplot> text01 = "using 1:4 with linespoints" 内容は見て分かるようにコマンド文のファイル名の後ろの部分としました。 そしてこのtext01をコマンド文として使うときには変数の先頭に"@"を付けて gnuplot> plot 'test01.dat' @text01 とします。こうすることで、コマンド文を実行するときに@text01が中身の文字列として置換されます。 また、コマンド文の一部だけ置換するのでは無く、コマンド文の一行全部も同じように扱うことも出来ます。あまり意味があるか分かりませんが、以下のようなことが出来るというわけです。 gnuplot> c =  "plot 'test01.dat' using 1:4 with linespoints" gnuplot> @c この機能はインタラクティブモードよりもスクリプトファイルを書く時に便利でしょう。 コマンド文の中の設定部分を各パーツごとに分けて変数として作っておけば、後々手を加えるときに編集箇所を分かりやすくしておくことが出来るというわけです。 例としては以下のようになります。 f = "test01.csv" u = "using 1:4" t = "title 'hogehoge'" l = "'function sin' at 3,21 boxe

図書館で借りてきた本をスマートフォンで管理

最近の図書館はWebから蔵書検索が出来るところが多いです。 蔵書検索サービスとしては図書館独自のものの他に、いくつもの図書館の蔵書を一度に検索出来るカーリルみたいのもあります。 カーリル | 日本最大の図書館蔵書検索サイト カーリル - Wikipedia さて、蔵書検索で本を探すのはそういうサービスが利用できますが、では図書館で借りてきた本の管理はどうでしょう?本の管理といっても、ちゃんと返却期限までに図書館なり返却ボックスなりに返せばいいわけですが、それをスマートフォンでより便利にする方法を紹介していきます。 カレンダーアプリで返却日を確認 まず本の返却期限については、カレンダーアプリの予定に追加しておけばいいでしょう。返す前日とか一週間前とかにアラートが出るように設定しておけば、返却日を忘れにくくすることが出来ます。 蔵書管理アプリで借りてきた本を忘れないようにする 多めに本を借りてきたときに、返す本がどれだったかを忘れてしまうこともあるでしょう。借りてきたものはちゃんと整理しておくべきですが、それでも返すときにどの本を返せばいいか分かっていれば探すのも楽になります。 こういうのはメモ帳に借りてきた本を書いておけば済みますが、スマートフォンアプリの「蔵書管理」系のアプリを使うとより管理しやすくなります。蔵書管理系のアプリは結構数多く出ています。本のバーコードをカメラ機能で認識するだけで登録出来るのもあるので、自分にとって便利なものを探してみて下さい。借りてきた本と、これまで借りた本を別管理するのも後々分かりやすくなるので、フォルダ管理機能もあるといいかもしれません。 蔵書管理なんてめんどう、という場合でも借りてきた本をざっと並べてカメラで写真を撮って残しておくだけでもいいでしょう。借りてきた本が分かればそれでいいのです。 地図アプリで返却場所へのルート検索 地図アプリも使えば、返却場所へのルート検索も便利になります。図書館以外に返却出来る返却ボックスの位置を登録しておけば、何かの用事のついでに返すときに便利になるかも。 最後に ここで紹介したもの以外に、読んだ本を記録して読書の感想を書き残して他の人と感想を共有出来るサービス(とそのアプリ) もあります。スマートフォンでいろいろアプリやサービスを組み合わせるとより便利に図書館を利用

gnuplotのstatsコマンドで取得出来る統計データを用いたグラフプロットの例

イメージ
gnuplotではデータファイルをプロットする他に、データファイルの統計データを取得するということも出来ます。そして統計データを取得するには「 statsコマンド 」を使用します。 ここでは取得出来る統計データの扱いに関してはあまり触れず、簡単な利用方法を説明していきます。 statsコマンドの使用方法はドキュメントを読んでもらうとして、実際にコマンドを実行すると端末に統計データの計算結果が出力されます。そして単に結果が出力されるだけでなく、統計用の変数にその結果が代入されます。どのような変数があるかについては、こちらもドキュメントを参照して下さい。 気温のデータを用いた例 statsコマンドを利用した例を、気象庁のデータダウンロードサービスから取得した気温のデータを用いて説明していきます。 取得したデータは以下の通り。 地点 :富士山 期間 : 2018年1月1日〜12月31日 項目 : 日最低気温 取得したデータファイルは扱いやすいようawkなどのコマンドで編集しています。 ここではデータファイルの1列目が行番号、2列目が日付、3列目が日最低気温となっています。 データファイルの一部を抜き出すとこんな感じになってます 283 2018/10/10 -1.7 284 2018/10/11 -3.4 285 2018/10/12 -8.2 286 2018/10/13 -6.3 287 2018/10/14 -11.5 288 2018/10/15 -9.5 データファイルをダウンロードした段階では行番号は付いていません。statsコマンドでは日時データが扱い難いため、取り扱いの観点から行番号を付与しました。2列目に日付が残ってますが、statsコマンドはplotコマンドと同じようにusingで解析する行を指定出来るので1:3のように指定すれば問題ないです。 statsコマンドの実行 statsコマンドは簡単には以下のように実行する形となります。 gnuplot> stats 'test001.csv' using 1:3 (一列だけ解析するなら "using 3" と指定します) コマンドを実行すると端末上に以下のように解析結果が出力されます。 * FILE:

gnuplotでグラフのプロット上に数値などのラベルを表示する方法

イメージ
グラフのプロット上に数値などのラベルを表示する方法を紹介していきます。 このプロット方法ですがあまり情報が集まらなかったので、今回は解説というよりメモ程度の話になります。gnuplotの公式サイトにあるプロットのデモを参考にして、使い方を押さえていけばいいかと思います。 ラベルプロットの例 棒グラフをプロットするものとして、グラフの各プロット(点)上にyの値を書きたい場合は以下のようなコマンドになります。 gnuplot> plot [0:10][0:15] 'test01.dat' u 1:2:2 w labels boxed offset 0,1, '' w boxes fs solid 0.3 コマンド自体はラベルのみのプロットと、同じファイルを用いた棒グラフのプロットに分かれています。ラベルとして使用されるのはusing(1:2:2)で指定している3つ目の列のものです。ラベルには文字列も指定して表示することも出来ます。 プロットに用いたデータファイル"test01.dat"の中身は以下のようになっています。 1 10 2 9 3 13 4 4 5 5 6 8 7 11 8 14 9 10 棒グラフを例にしましたが、その他のプロット方法でもsplotの三次元プロットでも使うことは出来ます。表示されるラベルの位置を調整するには「offset」を指定するといいようです。ラベルが四角で囲まれているのは「boxed」という指定を入れているためです。 その他、フォントの扱いなどのラベルの表示方法はいろいろとカスタマイズ可能なようです。 その他、gnuplot関連のブログ記事

過去数年に渡る気温変化のデータプロット

イメージ
気象庁のデータダウンロードサービスを利用して、過去数年の気温の変化をグラフにしたものを作ってみました。 取得したデータは以下の通り。 地点 : 長野(長野県) 期間 : 2010/1/1〜2018/12/31 項目 : 日平均気温、日最低気温、日最高気温 グラフに作るに当たってはgnuplotを使用しています。また、データ加工には以下のコマンドを使用しました。 iconv (文字コードをUnicodeに変換) awk (特定の列のみ切り出す。ついでにデータ区切りをスペースに変換) sed (日付部分を扱いやすいようにするため使用) head, tail (先頭数行の削除などに使用) とりあえず、取得したデータをすべてプロットすると以下のようになりました。赤線が日平均気温で、紫の帯の部分は上端が日最高気温、下端が日最低気温を表しています。 さすがに9年分のデータを並べると日付の感覚が狭くなってなってしまいちょっと分かり難いですね。それでも冬と夏で周期的に気温が大きく変化しているのがわかります。 もう少し範囲を狭めてみると以下のようになります。2016/1〜2018/12の3年分になります。 さっきよりは日付の感覚が広くなっているので、月ごとの変化が分かりやすくなったかと思います。 さらに範囲を狭めてみます。データ2018年の1年間分です。 毎月の変化を見るなら、間隔としてはこれくらいがちょうどよさそうです。 さて、グラフからは2月の中盤くらいから徐々に寒さが緩んでくるように読み取れます(あくまでも過去のデータの話で、今年がどうなるかは分かりませんが)。 気象庁のデータダウンロードからは平年値も取得することが出来るので、過去の傾向を読み取るならそっちでグラフを作った方がいいでしょう。

gnuplotでシステム側のコマンドを使う、コマンドの実行結果を取得する方法(system)

イメージ
gnuplotでは 「system」 というコマンドを使用することで、システム側のコマンドを実行することが出来ます。 例えば、gnuplotをインタラクティブモードで使っているときに、フォルダ内のファイルを確認するという使い方が出来ます。データファイルをプロットする時にフォルダ内のファイル名を確認したい時に便利かと思います。 使えるコマンドについてはgnuplotを実行しているシステム(OS)に依りますが、ここではLinux(Ubuntu 18.04 LTS)上で実行しているものとして話を進めることにします。 systemコマンドの実行例 systemコマンドの実行方法 フォルダ内のファイルを「ls」コマンドで確認したい場合は、systemコマンドを用いて以下のように書きます。 gnuplot> system "ls" コマンドの実行結果を取得する方法 上記の方法ではコマンドの実行結果は画面上に出力されますが、これを文字列として変数に取得することも出来ます。この場合、systemコマンドでは括弧を付けて以下のように記述します。 gnuplot> d = system("date") (dという変数にdateコマンドの出力結果を入れる) これをグラフタイトルにするには gnuplot> set title d gnuplot> plot sin(x) というようにすればよいでしょう。   フォルダ内のファイル名を取得しプロットに利用する 応用的な使い方として、フォルダ内のファイル名を取得してデータプロットに使う方法を説明していきます。話としては以下の記事に関連するものです(wordやwords関数の使い方はその記事を読んで下さい) 。 gnuplotのplotでforループを使った活用方法(その1) フォルダ内に以下の5つのファイルがあるものとします。 「001.dat, 002.dat, 003.dat, 004.dat, 005.dat」 これをまとめてプロットする場合、以下のようなコマンドとなります。 gnuplot> f = system("ls *.dat") gnuplot> fi

gnuplotのplotでforループを使った活用方法(その1)

イメージ
以前のブログでplotコマンドで用いるforループについて簡単に解説しました。 gnuplotのplotでforループを使ったグラフプロット(plot for [i = ... ) このときは変数を単に数値として用いる方法と文字列を扱う方法を少し紹介しましたが、いろいろ組み合わせると活用できる幅が大きいです。 今回はそこからいくつか役に立ちそうな活用方法について紹介していきます。 変数に数値を用いる これは以前のブログで紹介した方法です。簡単には以下のような使い方になります。 plot for [i = 1:5] sin(x) * i 変数に文字列を用いる 変数に文字列を用いる場合の書式は [moji in "文字列1 文字列2 文字列3 文字列4"] のようになります。 ファイル名の生成に用いる  文字列を使う場合の方法として、いくつものデータファイルをプロットする場合の指定方法に使うことが出来ます。 ここではワークフォルダ内にある「001.dat, 002.dat, 003.dat, 004.dat, 005.dat」の5つのデータファイルをプロット指定しています(ついでにtitleにも指定)。 plot for [file in "001 002 003 004 005"] file.".dat" title file ここではファイル名のリストで拡張子".dat"を省いてリストの外側でそれを付ける形にしています(別にリスト内で拡張子付きのファイル名でも問題ないです)。 変数を複数用いる方法 ここまではループ変数は1つのものを紹介してきました(数値やファイル名)。では変数を複数、例えばファイル名の他に線の色も変数で割り当てたいなどの場合どうすればいいでしょう? それにはやや入り組んだ手法を用いることになります。 まず1つのplot指定ではループ変数は1つしか使えないようです。 (調べた限りではそうでしたが何か方法があればコメント下さい) その条件において複数の変数を使いたい場合、複数のリストを作成することで対処することが出来ます。 解説は後回しにしますが、処理を書くと以下のようになります。 file = "001.dat 00

gnuplotで複数のグラフを1つにまとめて出力する方法(multiplot)

イメージ
multiplotとは gnuplotでは普通にプロットすると1つのグラフのみが出力されます。複数のグラフを同時に扱いたい、例えばグラフの中に説明用に小さなグラフを載せたい場合や、複数のグラフを並べたものを作りたい場合もあるでしょう。そういった場合、一度画像ファイルとして出力してから何かしらの画像エディタで編集して作り上げてもいいのですが、それだとやや作業が煩雑になってしまいます。 gnuplotにはmultiplotモードという機能が用意されていて、これを用いることで一つのキャンバスに複数のグラフ出力が出来るようになります。multiplotを使う場合、細かく配置を指定するには個々のグラフ領域の扱いなどやや考慮すべきことが多いのですが、簡単に使う分にはそれほど難しくはないです。 multiplotモードの解説 multiplotモードを以下のような簡単な例を用いて説明していきます。 set multiplot set size 1,1 set origin 0,0 plot x set size 0.4,0.3 set origin 0.5,0.6 clear plot sin(x) linecolor 'red' set size 0.4,0.3 set origin 0.5,0.1 clear plot x**2 linecolor 'green' unset multiplot 基本としては「set multiplot」でmultiplotモードに切り替え、個々のグラフ領域など設定しつつ複数のグラフをプロット。最後に「unset multiplot」でmultiplotモードを終了させます。終了させることでインタラクティブモードでは通常のgnuplotのモードに戻ります。 「set size」、「set origin」で個々のグラフ領域の大きさや配置する箇所を決めています。 multiplotモードで使うclearコマンド さて上のコマンド例で「clear」コマンドを用いていますが、このコマンドは指定した領域を削除するというものです。multiplotモードでグラフの中にグラフをプロット場合、そのままプロットすると2つのプロットが重なって見づらくなる場合もあります。

Firefoxで検索エンジンで検索し結果を新しいタブで開く方法(キーボードショートカットにて)

Firefoxで何かしらを検索したい場合、新しいタブを開いてアドレスバーなり検索ボックスなりに検索ワードを打ち込んで検索します。 (その他にGoogleやYahooなどのブックマークを新しいタブで開いて検索するという場合もありますが、今回はそれは考えないことにします) それ自体は特に難しい話ではないですが、同様の操作をキーボード・ショートカットを用いてもう少し効率化しようというのが今回紹介する話です。 アドレスバーに検索語を入力してから、結果を新しいタブで開く方法 さて検索エンジンで検索しようと思うときはどういう時でしょう? ふとした思いつきで検索する場合もあるでしょうけど、何かしらのサイトを見ていて検索したいことが頭に浮かぶことが多いのではないでしょうか。 さて、そうした場合に何を検索したいか考えながら検索ワードを入力する場合、常にそのサイトを見ながら検索ワードを考えていくのがスムーズかと思います。その場合、新しいタブを開いてから検索ワードを入力するのでは、そこで一旦思考が途切れることになる場合もあるのではないでしょうか(何かしら思いついて検索しようとしたら、ふとした拍子に何を調べたいのか忘れてしまう場合など)。 そうした場合、そのサイトは開いたままアドレスバーに検索ワードを入力して、検索結果のページを新しいタブで開くことで解決します。 まずアドレスバーにフォーカスを合わせるキーボード・ショートカットは Ctrl + k (もしくはCtrl + j) です。キーボード・ショートカットを押した状態ではまだアドレスバーにそのサイトのURLが表示されたままですが、何かしら文字を入力すればURLはそっくり消えます。 さて検索ワードを入力し、そのままエンターキーを押すとそのタブに検索結果のページが開かれます。いま見ているサイトは残したまま新しいタブで検索結果を開くには以下のキーボード・ショートカットを用います。 (アドレスバーにて) Alt + Enter これで新しいタブで検索結果のページを開くことが出来ます。 まとめると Ctrl + k (もしくはCtrl +j) でアドレスバーにフォーカスを当てて、検索ワードを入力 Alt + Enter で新しいタブで検索結果のページを開く という手順になります。

gnuplotのコマンド文でのコメントアウトの使い方

イメージ
gnuplotにおいて、プログラミング言語でよくあるコメントアウトを使いたい場合の使い方について紹介していきます。スクリプトファイルでgnuplotの処理を書いているときなどに役に立つでしょう。 (今回の話はコマンド文においてのコメントアウトについてで、データファイル内におけるコメントアウトはまた別の話になります) 紹介といっても話は単純で、コマンド文の先頭に 「#」 を書いておけばその行のコマンドはコメントアウトされます。 また先頭ではなくコマンド文の途中に「#」を書くと、それより後ろ側はコメントアウトされます。 例えば plot sin(x), cos(x), x というコマンド文は以下のようなグラフになりますが、 次のようにコマンド文の途中に「#」を書けば、それより後ろの部分はコメントアウトされます。 plot sin(x) #, cos(x), x コメントアウトを使うと、一時的にコマンド文を無効にしたい場合や、行末にコマンド文の解説などを書くことにも使えるので何かと便利です。 その他、gnuplot関連のブログ記事

gnuplotで他のコマンドからの出力結果をプロットする方法(Piped-data)

イメージ
 gnuplotでデータファイルをプロットするとき、データファイルそのままではなく何かしらの処理をしてからプロットするということはよくあります。その場合、前もって他のソフトやコマンドを用いてデータファイルに何かしらの処理をし、別のデータファイルとして保存。それをgnuplotでプロットすることになるでしょう。 それでもいいのですが、データ処理とプロットをひとまとめに出来れば処理工程を減らすことが出来ます。 そしてgnuplotには「Piped-data」という、他のコマンドの出力結果をデータファイルかのように扱える機能があります。これによりデータ処理とプロットをひとまとめにすることが出来ます。 Piped-dataを使う時の書式 Piped-dataを用いる時の書式は「<」記号を用いて、以下のようになります。 gnuplot> plot "< awk '{print $1, $2+$3}' test.dat" w l 解説すると、これはtest.datというデータファイルをawkコマンドで処理したものをプロットしています。awkコマンドでは1列目はそのままで、2列目と3列目のデータを加算したものを2列目として出力しています。 sedコマンドを使った例 次に以下のようなデータファイル(test02.dat)を例にPiped-dataの使い方を考えてみます。 #a b c 1 3 10 2 4 20 3 1 15 4 9 22 5 2 19 6 3 11 gnuplotでは以下のようにusingで列ラベルを指定してプロットすることが出来ます。 gnuplot> plot 'test02.dat' using "a":"b" w l しかし、test02.datの列ラベルは「#」でコメントアウトされているので、上のコマンドでプロットしようとしてもエラーとなります。その場合、以下のようにsedコマンドで「#」を削除すれば列ラベルで指定したプロットが出来るようになります。 gnuplot> plot '< sed "s/#//" test02.dat' us

gnuplotで軸を数値ではなく任意のラベルで表示する方法(usingでticlabelsを用いる)

イメージ
gnuplotで以下のグラフのようにx軸を数値ではなく、任意のラベルに割り当てて表示する方法を紹介していきます。 このグラフはデータファイルとしては以下のようになっています。 サンプル-壱 3 サンプル-弐 4 サンプル-参 1 サンプル-四 2 方法としてはusingの書式でticlabesを設定する方法と、setコマンドでxtics listを設定する方法があります(その他にもあるかも)。 上の例のようにデータファイルに書かれているラベルを用いたい場合はusingで設定する方を用いるのが便利でしょう。今回はこちらのticlabelsを用いる方法を紹介していきます。 ticlabelsについて ticlabelsは設定の総称で、実際に設定するのは以下に示すような各軸の設定項目になります。 x軸 : xticlabels, x2ticlabels y軸 : yticlabels, y2ticlabels z軸 : zticlabels usingで指定するときの書式 まずもっとも短いであろう書式を書いておきます。 gnuplot> plot 'test01.dat' using 2:xticlabels(1) with boxes これは一見するとそれほど難しくはないのですが、usingの書式からすると結構違和感のある書き方に見えるかと思います。 usingの部分だけ見ると 「using 2:xticlabels(1)」 となってますが、この書き方だとデータファイルの2列目がx軸、1列目のラベルがy軸のように見えるかと思います。しかし実際にはこれは2列目はy軸、1列目のラベルがx軸となる設定の書き方になっています。 なぜこのような書き方になるのかやや分かり難いのですが、これはusingで設定すると言っても プロットの指定部分とticlabelsの指定部分は分かれている と考えると理解しやすいでしょう。 そして再び 「using 2:xticlabels(1)」 という書き方を見ると、これはプロットの指定部分は「2」、ticlabelsの指定部分は「xticlabels(1)」という書き方になっています。 以前のブログ gnuplotでデータファイルをプロットす

2019年(平成31年)、新年初ブログ投稿

イメージ
あけましておめでとうございます。 年も明けて2019年。平成も31年になりました。 昨年はまぁこれと言って何かしたというわけでも無いですが、なんとか無事(?)過ごすことが出来ました。 ブログの方は昨年の後半から結構頻繁に書くようにしていて、gnuplotやEmacsの話、タイムラプス動画のまとめなど投稿してました。 ブログのアーカイブを調べると昨年は1年で141件の記事を投稿。計算すると2,3日に1本投稿してることに。自分としては結構な頻度での投稿になりました。 昨年だけじゃなくもっと過去の分も調べると以下のグラフのようになってました。 横軸が西暦で縦軸がその年の投稿数になってます。 このブログは2007年に終わりから初めてますが、2008〜2010年は投稿数が結構多かったです。ただこのへんはTwitterへの投稿を毎日自動でブログにまとめるとかしてたので、それもあって多くなってるかなと。 その後はTwitterにハマってたりなんやかんやあってあまりブログを書かいてなかったですが、2017年あたりから意識して書くようにしてました。書くようなネタがあるときやなんかやる気が出たときは「書くぞー」って気分になりますね。モチベーションは大事。 さて、年が明けて2019年。今年は自分にとってどんな年になるかわからないものですが、まぁぼちぼちやっていこうと思います。

スポンサーリンク