投稿

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

gnuplotの雑談小ネタ その1

gnuplotの雑談小ネタ gnuplotの解説記事を書いてましたが、そろそろ基本的なことは大抵書いたつもりです。まだ極座標プロットなど触れていないようなこともありますが、個人的にあまり使わない機能は自分でもよく分かっていないので、それらについてはちゃんと調べてから記事にしようかと思います。 で、今回この記事の話としては、これまで書いてきたこと、これから書いていくだろうことについて雑談的に触れていこうかと思います。あまり役に立つような内容でもないですが、読んでもらえると幸いです。 dgrid3dについて gnuplotの3次元プロットsplotでは、格子状のプロットを作る際はデータファイルをそれ用に作っておく必要があります。単にデータだけ3列用意してもそのままプロットすると、格子状ではなく1本の線で結ばれるだけになります。 で、dgrid3dという機能を使うと、それ用に作っていないデータファイルでもそのへんを補完計算して格子状プロットを作ることが出来ます。ただこの機能、使う分には手軽に使える反面、出来上がったプロットが何を表しているのかを読み取るのが難しい。元のデータにはない部分を補完して計算する都合上、作るプロットに正確性が必要ならどういった計算で補完しているのかを知っておく必要があります。 (あまり正確でなくともよい場合は、ある程度概略だけ押さえておけばいいと思いますが) dgrid3d自体、いくつかの補完計算が用意されていて、与えるパラメーターでどれを使うかを決めます。なので、この機能を記事にするとしたら、そのへんの解説を押さえてからになるでしょう。いつになるかわからないですが😊 linespointsで線と点で別々の色は使えるのか? pointsの色指定もlinecolor (lc) で指定するんですよね。そうするとプロットスタイルがlinespointsの場合、例えば lc "red" とすると線と点の両方が赤色になる。じゃあ点だけ青色にするにはどうすれば?という問題があります。一応、解決方法としては、linesプロットとそれと同じデータファイルでpointsプロットをしてそれぞれ別々の色指定をすればいいです。では1回の手順で済ませる方法はあるのでしょうか? PDFプロットでは1つのファイルにいくつもグラフを追加

家庭菜園 : これがネキリムシ…なのかな?(虫写真注意🐛)

イメージ
以前、オクラの芽が折れていたってブログを書いたんですが 家庭菜園 : オクラの芽が根本付近から折れている よく言われるネキリムシは見かけなかったため、原因は他なんじゃないかな?って思ってました。 ところが、先日ちょっとそのオクラを植えた近くの土を掘っていたら、何やらイモムシというかカブトムシの幼虫が小さくなったような生き物が潜んでました…。 写真にモザイク処理をしたのがこちら(最後にモザイクなしのを載せて起きます)。 ネキリムシ?(モザイクあり) 全長2cmくらいで掘り出してみたらやたら動き回ってました。 たぶんこれがネキリムシなのかなと思います。なのでオクラの芽が折れてたのもこの虫が原因の線が濃厚…。 ネキリムシってのは特定の虫を示すのではなく、ある種の総称のようです。日本では数種類のガの幼虫が主にネキリムシとされているようです。 さて、この後も少し土を掘っていたら3匹ほど出てきました。結構いるもんですね。対策としては薬剤もあるようです。また、畑にある程度雑草を残しておけばそっちの方を噛んで餌とするそうなので、植えた野菜の苗の被害は減らせるようです。 とりあえずネキリムシっぽいのがいることが確認出来たので、今度何かを植える時は策を練って対策することにします。 最後にモザイクを外した写真を載せておきます。 ネキリムシと思われる

gnuplot : Pythonスクリプトにパラメーターを与えてプロット(sprintf)

イメージ
はじめに 前回の解説記事で、gnuplotからPythonスクリプトを呼び出し、その出力をPiped-dataでプロットする方法を取り上げました。 gnuplot : Piped-dataとPythonスクリプトを組み合わせたプロット(基本) このときは単に用意したデータをプロットするだけでしたが、今回はそこから発展してPythonスクリプトにパラメーター、つまり引数を与えてプロットする方法を解説します。これによりPythonスクリプトの出力結果をgnuplot側から操作することが可能となります。 Pythonスクリプトでパラメーターを与えてプロットする方法 準備 : Pythonスクリプトで引数を受け付けるようにする まず用いるPythonスクリプト自体を引数を受け付けるように作っておく必要があります。ここでPythonについて解説はしませんが、簡単に言うと"sysモジュール"の"argv"を用いて作ります。 例えば、"test01.py"というPythonのスクリプトファイルを以下のコード内容で作ります。 import sys a = sys.argv[1] print(a) このコードを実行するときに以下のように"1234"という引数を与えると、その引数が出力されます。 $ python3 test01.py 1234 argvはリストとなっていて、argv[0]にスクリプトファイル名、それ以降に引数が格納されます。 gnuplotから呼び出す方法 - その1: 直接Piped-dataのところに記述する gnuplotから引数を与えてPythonスクリプトを呼び出すとき、最も簡単には次のようにそのままPiped-dataのところに記述してしまえばよいです。 gnuplot> plot "< python3 test01.py 1234" with linespoints gnuplotから呼び出す方法 - その2:sprintfで引数を変数から読み込む ある変数、例えば"a = 321"を用意して、それを引数として用いることを考えます。gnuplotには文字列関数としてsp

gnuplotプロット例 : デジタル時計

イメージ
gnuplotでデジタル時計を作る 時計を作る目的 時計を作るというのは、gnuplotのグラフを作るという用途とはほぼ関係がないです。ですが、作ることでgnuplotでの日時の扱いを把握し使いこなせるようになるのには役に立つかな思って作ってみることにしました。 完成したデジタル時計 まず始めに作った結果から示します(次のGIFアニメ)。 gnuplotで作ったデジタル時計 ソースコード ソースコードは以下の通り。 unset key set xrange [-10:10] set yrange [-2:2] while (1){ set label 1 strftime("%Y年%m月%d日 %H時%M分%S秒", time(1)+9*60*60) center at 0,0 font "SetoFont,25" plot sin(x)*0.1 - 0.5 lw 3 lc "green" pause 1 } 出力端末はQtを用いています。画像出力の出力(pngなど)では動作しません。 このソースコードを実行すると無限ループで動き続けるので、終了するときは端末でCtrl-zとして下さい。 (日時の取得はシステム側から取得しているので、このソースコードはもしかしたらOS依存があるかも知れません) ソースコードの解説 ソースコードの解説をすると、まず何かしらプロットしないとグラフが表示されないので、plotコマンドでsin関数をプロットしています。なのでここのplotコマンドは単にグラフを表示させるためだけのもの。 肝心の時計表示の部分は"label"を置くことで実現しました。ここでlabelに与える時計部分の文字列をstrftime関数で取得しています。この関数は与えられた秒数を指定されたフォーマットに従って出力します。 strftime("出力する日時フォーマット", 1970年1月1日0時00分00秒からの秒数) 今回は日付付きのデジタル時計を作るため、出力フォーマットは"%Y年%m月%d日 %H時%M分%S秒"としました(記号が何を意味するかについてはドキュメントを参照して

gnuplotの勉強 : 日付&時刻の演算について

イメージ
gnuplotの日付や時刻の扱い、まだいまいち理解出来ていないので、いつもの解説記事ではなくて勉強している過程で分かった範囲を書いておきます。ちゃんとまとまったら解説記事としてまたまとめ直そうかと予定してます。 現時点ではちゃんとしたまとめではないため、この記事に書いてあることは内容の齟齬や思い違いが含まれるかも知れません。 gnuplotの日付と時刻の扱いのおさらい 日付と時刻の扱い、基本的なことは以前の解説記事に書きました。 gnuplotでの日時データのプロットについて 単に日付、時刻がデータとして含まれるデータファイルをプロットする分には、そこに書いた内容で対応出来るでしょう。今回考えていくのは、そのデータファイルの日付、時刻のデータに演算処理をしていくことについて。どういうことをしようとしてるのかは次で説明します。 演算処理が必要になる場面 演算処理が必要になる場面として、例えば以下の2つのデータを並べてプロットすることを考えます。 2018年の1年365日のデータ(書式 : 2018/07/21) その5年前の2013年の同様のデータ(書式 : 2013/07/21) ここでは以下のような簡単なダミーデータを作って試すことにします(Y軸の数値は適当にcos関数で作っています)。 2018年分のダミーデータ  同様にして2013年のデータも以下のように作っておきます(こっちのY軸はsin関数)。 2013年分のダミーデータ プロットするにあたり、1月1日から始まるように以下のようにgnuplotの設定を行いプロットしました。 set xdata time set timefmt "%Y/%m/%d" set format x "%m/%d" そしてプロット結果は以下のようになります。 異なる年のデータを並べてプロットしようとして失敗 プロット結果を見て分かるように、2つの年のデータが大きく離れてプロットされてしまいました。こうなってしまった原因は単純で、x軸の書式を"%m/%d"という書式にしていても開始は"01/01"ではなく"2013/01/01"から始まっているため。なので2018年のデー

gnuplot : Piped-dataとPythonスクリプトを組み合わせたプロット(基本)

イメージ
はじめに 今後 「Piped-dataとPythonスクリプトを組み合わせたプロット」 というテーマで何本か解説記事を書いていく予定です。今回は始めということで、基本の部分について解説していきます。ここでやること自体はこれといっておもしろいものでは無いですが、仕組み上の基本ということに意味があります。 (テーマでPythonを扱っているのは、自分が一番扱いやすいプログラミング言語だからという理由です。他のプログラミング言語、コマンドなどでも応用可能です) Piped-dataについて gnuplotのPiped-dataについては以前の解説記事で説明しています。 gnuplotで他のコマンドからの出力結果をプロットする方法(Piped-data) 簡単におさらいすると gnuplot> plot "< 外部コマンド" として、外部コマンドの出力をデータファイルとしてプロットするという仕組み。 用いるPythonスクリプト 今回は基本の解説なので、Pythonスクリプトは単に与えられたデータを書き出すという単純なものを用います。Pythonスクリプトは以下に示すように、x, yのいくつかのデータをそのまま出力するというもの。 data01 = """\ 1 2 2 1 3 4 4 0 5 6 """ print(data01) これを"script01.py"というスクリプトファイルとして保存します。 ちなみにこの段階で実行すると以下のようにx, yのデータが出力されます。 $ python3 script01.py 1 2 2 1 3 4 4 0 5 6 PythonスクリプトをPiped-dataから呼び出す 用意したPythonスクリプト"script01.py"をgnuplotからPiped-dataを用いて呼び出してプロットします。ここでは特に難しくはなく、以下のgnuplotコマンドとなります。 gnuplot> plot "< python3 script01.py" with linespoints これで以下のグラフがプロット

catコマンドの出力を行番号付きにするためのコマンドラインオプション(-n, -b)

イメージ
catコマンドの出力を行番号付きにする catコマンドでテキストファイルの中身を出力するとき、行の先頭に行番号を表示させたい場合はコマンドラインオプションに "-n" を付けます。 また "-b" オプションを用いると、改行のみの空白の行はカウントされずに行番号が付与されます。 行番号出力の実行コマンドの例 例として用いるテキストファイル(Pythonのスクリプトファイル)をcatコマンドでオプション無しで出力した場合は以下の通り。 catコマンドでオプション無しで出力 これを "-n" 及び "-b" オプションで出力する例を以下に示します。 実行例1. "-n" オプションで全ての行に行番号を付与 $ cat -n sample01.txt "-n"オプションで行番号を付与 実行例2. "-b" オプションで改行のみの空白行は無視して行番号を付与 $ cat -b sample01.txt "-b"オプションで空白行は無視して行番号を付与 関連記事 lessコマンドで行番号を表示するためのコマンドラインオプション(-N)

lessコマンドで行番号を表示するためのコマンドラインオプション(-N)

イメージ
lessコマンドで行番号を表示 lessコマンドでファイルを表示させる時、行の先頭に行番号を表示させたい場合はコマンドラインオプションに "-N" を付けます。 行番号表示の実行コマンドの例 ファイル名を指定して実行する場合 $ less -N test01.csv パイプを介して実行する場合 $ cat test01.csv | less -N なお、次の実行例のように "-N" オプションはファイル名の後ろにつけてしまうと行番号は表示されません。  (オプションとしてではなく、ファイル名として認識されてしまう模様) $ less test01.csv -N 行番号を表示したときとしなかったときのスクリーンショット 例えばデータファイルで行番号を表示させると次のような表示となります。  行番号を表示させたときのスクリーンショット 比較として、行番号無しの通常の表示では以下の通り。 行番号無しの表示(通常はこの表示)

gnuplot : 線種や矢印などに適用するスタイルを作る(set style)

スタイル(set style)とは gnuplotではデータや関数のプロットの線種を gnuplot> plot "test01.dat" with lines linewidth 3 linecolor "red" のように "with ..." を用いて設定します。 そして、この方法とは異なり線種のスタイルを作って、それをプロット型式に適用するということも出来ます。前もってスタイルを作っておくことで、コードを書く時に読みやすく書けるようにもなるでしょう。 補足 後述しますが、スタイル機能は "set style ..." の書式で設定しますが、関数、線種、矢印など適用する要素によって設定する項目が変わってきます。また、適用するやり方にも違いがあることに注意して下さい。スタイル設定を統一的な方法だと思ってしまうと混乱する可能性があります。 スタイル適用の簡単な例 スタイルは "set style ..." で作ることが出来ます。例えばプロットの線種で線幅が5、線の色がグリーンのスタイルは以下のように作成します。 gnuplot> set style line 1 lw 5 lc "green" そしてこれをプロットの線種に適用するには gnuplot> plot "test01.dat" linestyle 1 とします。 スタイル設定の上書き  スタイル設定を適用と共に "with ..." 内などでそれと重複する設定を書くと設定が上書きされます。 スタイルを適用出来る要素 スタイルを設定、適用出来る要素は限られています。適用出来る要素としては主に以下のものがあります。 関数(function)、データ(data) line、arrow、textbox、histogramなど 関数(function)、データ(data) 関数(function) gnuplot> plot sin(x) のような関数プロットにスタイルを適用するには gnuplot> set style function dots とし

今年(令和元年、2019年)のレッドカラント(フサスグリ)

イメージ
 ちょうど去年の今頃、レッドカラント(フサスグリ)でジャムを作ったブログ記事を公開しました。 レッドカラント(フサスグリ)でジャム作り そんでもって、今年(7月11日)のレッドカラントの様子はというとこんな感じ。 今年(令和元年、2019年)のレッドカラント  今年は曇りや雨続きで日照が少ないですが、色付きとしては結構いい感じに赤くなってるようです。まだ実の方は地面にそれほど落ちてはいないので、熟すまではもう少しかかるでしょうか。まぁ熟しても酸っぱいのはあまり変わらないし、ジャムにするなら砂糖で甘くすれば済みますが。  また今度、ヒマが出来たときにでも収穫することにしましょう。

Blenderメモ : Pythonスクリプトで球を1000個配置する

イメージ
BlenderでPythonコンソールを使った操作  BlenderではPythonによるスクリプト処理が行えるようになっています。まだこの機能を使い始めたばかりで分からないことばかりですが、とりあえず基本的なオブジェクト配置とループ処理について出来た範囲で書いておきます。 画面を分割し、下画面でPythonコンソールを表示 Pythonによるスクリプト処理の実行 PythonコンソールとText Editor(Blender内部のエディタ)  BlenderでPythonを使った処理を行うとき、2つ方法があります。1つは上のスクリーンショットにあるようにPythonコンソールから行う方法。もう1つはText Editor(Blender内部のエディタ)に書いたスクリプトを実行する方法。  他のファイルに書いたスクリプトを読み込むにはText Editorで開いて実行する方がやりやすいでしょう。ちょっと試したところ、Text Editorにスクリプトを書く場合はBlenderのモジュールを読み込む処理を描く必要があるようです。Pythonコンソールの場合は始めからそのモジュールを読み込んでいるようです。またPythonコンソールでは"Ctrl - Space"で補完入力が行えます。  どちらを使うのがいいかは状況によるので、必要に応じて使いやすい方を選択して使うのがいいかと思います。 Blenderで用いるPythonコマンドの取得 BlenderにどのようなPythonコマンドが用意されているかはドキュメントやリファレンスを読むのがいいのですが、簡単には使いたいメニュー項目上で右クリックメニューから取得するということも出来ます。 メニュー項目から右クリックメニューでPythonコマンドを取得 また、ここからコマンド取得の他にリファレンスも参照出来ます。 Pythonスクリプト実行例 : 球を1000個配置する  オブジェクト配置とループ処理を合わせて球を1000個配置する簡単なスクリプト処理を行ってみます。 bpy.ops.mesh.primitive_uv_sphere_add() でsphere(球)を配置出来ます。ここに位置座標を"location"で指

Blenderメモ : 視点をカメラから見たものに切り替える

イメージ
レンダリングせずにカメラ視点で見る方法  Blenerでレンダリングすることでカメラから見た絵が出来ますが、簡易的であればレンダリングしなくとも見ることも出来ます。View画面を2つに分けておけば、カメラの移動に合わせてリアルタイムにカメラから見た絵が把握出来るので便利です。 カメラ視点に切り替える方法 設定方法は以下のスクリーンショットのように "View" → "Align View" → "Align Active Camera to View" とします(スクリーンショットでは下画面はすでにカメラ視点に変わってますが、気にしないで下さい)。 カメラ視点に切り替える方法 カメラ視点設定メニュー拡大 View画面を2つ分けて、1つを通常の編集、もう一つをカメラ視点にすれば以下のようになります。 通常の視点とカメラ視点を同時に表示 ここでカメラの位置を動かすとそれに連動してカメラ視点に反映されます。

Blenderメモ : ウィンドウを見やすくしてみる

イメージ
始めに  Blenderを改めて使ってみようと思い、少し自分なりに使いやすくみることにしました。専門ソフトだけあって操作性が複雑なもんで、どこをどうしたらどうなるってのが初見ではちんぷんかんぷん。せっかく操作など覚えてもBlenderを常用してないといつの間にか忘れてしまいがち。ということで、基本的な操作や設定など自分用のメモも兼ねてブログ記事として書いていこうと思います。 文字やパーツなどを大きくする 「User Preferences」に"Scale"設定があるのでこれを1以上にすると、ディスプレイの文字やパーツが全体的に大きくなります。 ユーザーインターフェースのScale設定  最大で2.00まで大きく出来るようですが、ここまで大きくすると文字やパーツなどが表示し切れなくなってかえって見難くなってしまいますね😟。このへんは使っているディスプレイサイズに合わせた大きさにするのがいいでしょう。 Scaleを2.00に設定した場合(大きくし過ぎるとかえって見難い) 配色のテーマを変更する  ウィンドウの配色テーマはデフォルトではダークテーマっぽいのですが、これを変更してみます。こちらは「User Preferences」にある"Themes"から変更出来ます。いろいろ細かくいじれるようですが、まとめて変更するには"Presets:"のところで変更するのがいいでしょう。またデフォルトで用意されてるのはダークテーマが多いようです。 Themesの設定画面 設定変更を保存する  Scaleやテーマの設定を変更したら、"Save User Settings"で保存します。保存しないと次回Blender起動時にはまた元の設定に戻ってしまいます。

水分子モデルを回転させてみる

イメージ
 水分子のモデルを作って回転させてみたら絵的におもしろかったので動画にしてみました。 rotation of water molecules - YouTube  もっと水分子の数を増やしてやると深淵をのぞくような感じになっておもしろいのですが、なにぶん処理時間も増えてしまうのでなかなか厳しいです。

家庭菜園 : オクラの芽が根本付近から折れている

イメージ
 家庭菜園、去年に続いて今年もオクラを植えています。で、主に植えてある場所はここまでは問題ないのだけど、去年の余った種でついでに植えてある場所でちょっとした異変が。  これが数日前の写真。ちょっと分かり難いですが、写真中央の芽2本が根本付近から折れてしまっています。 根本付近から折れているオクラの芽 その1  それでこれが今日(2019年7月7日)見たときの別の芽の写真。 葉が無残に落ちていて、茎(写真右下)だけ残ってます。 根本付近から折れているオクラの芽 その2   メインで植えてある箇所にはこういった被害はなかったのですが、それでもショックといえばショック。こっちはまだあと7本ばかり植えてあるんですが、さて今後どうなることやら。  で、原因はというとおそらく虫か鳥じゃないかなと。一応、簡易的な柵で小動物は入りにくいようにはしているし、足跡などもない。なので、消去法として残るのはやはり虫と鳥になるでしょう。調べてみるとこういう被害を起こすものとして、ネキリムシというのがいるようです。ただこの場所でイモムシの類いはほぼ見かけてないので、ネキリムシという線は薄そう?まだよくわからないですが。  一応対策として、試しに根本付近にワラを敷いておいています。それと比較用に数本はワラ無しでそのまま様子を見てみることに。 追記(2019年7月26日) ネキリムシっぽいのが見つかりました…。 家庭菜園 : これがネキリムシ…なのかな?(虫写真注意🐛)

gnuplot : splotでデータファイルをプロットする際に格子状ラインで結ぶようにする方法

イメージ
splotによる3次元プロット表示  gnuplotではplotコマンドによる2次元グラフ表示に加え、splotコマンドによる3次元グラフ表示が出来るのも大きなポイントです。 splot、関数プロットの例 splotでの格子状表示  関数プロットでは上のグラフのような格子状のラインで結ばれたグラフになるのですが、データファイルプロットの場合はデータの書き方が重要になってきます。このデータの書き方が結構失敗しやすく、データファイルプロットでうまく格子状にならない原因ともなります。  書き方に失敗すると例えば以下のようなグラフになります。x軸に対しては線で結ばれていますが、y軸は線で結ばれていません。 格子状表示にしようとして失敗した場合の例  今回は、格子状となるデータの書き方について簡単な範囲で説明していきます。説明では全てを扱うわけではないので、詳しくは公式のドキュメントやその他書籍、Webサイトなどを参考にして下さい。 データファイルで格子状表示にする書き方 書き方1. 数値1列のみでブロック分けをする  書き方の中でシンプルなものとして、以下のような数値1列のみで改行によりブロック分けする方法があります(なおブロックを分けるとき、改行を2つ以上にすると失敗します)。 2 3 1 5 6 3 1 4 2 5 2 4 1 5 2  この書き方を説明すると、 個々の数値はzの値 ブロック内の数値の個数がxの値(ここでは5つで0〜4) ブロックの個数がyの値(ここでは3つで0〜2) という扱いになります。 このデータファイルをsplotでプロットすると以下のグラフとなります。 書き方1. 数値1列ブロック分けのプロット 書き方自体はシンプルですが、xやyの値が明示されないため慣れるまでは直感的にやや分かり難い面もあります。また、この書き方では   各ブロックのデータの個数が一致している必要 があります。各ブロックで異なるデータ個数のファイルをプロットした場合は、格子状表示とはなりません。 書き方2. x,y,zの数値3列でブロック分けをする  次の書き方はx,y,zの数値3列で書く方法です。 1 1 3 1 2 2 1 3 5 1 4

Bashでインラインコマンド部分$()を書いている時にタブ補完しようとするとエラーとなってしまう

 タイトルの件、 「Bashでインラインコマンド部分$()を書いている時にタブ補完しようとするとエラーとなってしまう」ですが、まず調べてみた結論から書いておきます。 (ここで「インラインコマンド」って書いちゃってますが、機能としては 「Command substitution」 というものです) 結論  関連するパッケージbash-completionの新しいバージョン (1:2.8-3)でこのバグは修正されているようです。 パッケージがバージョンアップされるのを待つのが無難でしょう。 経緯  Bashで$()を用いてインラインコマンドを書こうとしたとき、タブ補完しようとTabキーを押したらエラーが出てしまいました。どうも$()単独で書いているときはエラーとはならず、 emacs $(echo のように先頭にコマンドを書いてある状態で$()を書いてるときにタブ補完しようとすると起きる模様。 表示されるエラーは以下のようになってました。 $ echo $(bash: unexpected EOF while looking for matching `)' bash: syntax error: unexpected end of file $ emacs $(echo ../bash: eval: line 22: unexpected EOF while looking for matching `)' bash: eval: line 23: syntax error: unexpected end of file bash: eval: line 22: unexpected EOF while looking for matching `)' bash: eval: line 23: syntax error: unexpected end of file 原因を調べるためネットで検索してみる 「bash completion inline command」で検索すると、いくつか関連する情報が見つかりました。 Bash Tab Completion: '-bash: unexpected EOF while looking for matching `)' -bash: synt

Python : 差し込み処理(format)で改行を含んだ複数行のテキストに対して差し込んでみる

 本題としては、複数行のテキストを用意してそこに対して差し込み処理をする話になるのですが、まず差し込み処理とはなんぞやということから説明していきます。話としては一行のテキストでも複数行のテキストでもformatメソッドで同じ処理をするだけです。ただPythonで複数行のテキストを扱う方法をちょくちょく忘れてしまうので、自分用のメモも兼ねて説明していきます。 Pythonのformatメソッドによるテキスト差し込み  テキストに対して他のテキストや数値を差し込むには、formatメソッドを用いることが出来ます。  差し込むという処理自体を説明すると、例えば 「ここに{}を差し込む」 と用意してあるテキストの{}の中に"テキスト"という文字列を差し込むと 「ここにテキストを差し込む」 となります。 他には 「光の速度は {} m/sです」 というテキストに"2.99792458"という数値を差し込むと 「光の速度は 2.99792458 m/sです」 となります。 差し込み処理は例えば定型文に対してデータベースにある住所や名前を入れて、一度にたくさんの同じような文面を作るときによく用いられます。メールのアドレス帳に登録してある人に名前などを挿入しながら、同じ文面を作成してメールを送る場合などがそうですね。 formatメソッドによる差し込み  Pythonではformatメソッドにより差し込み処理が行えます。簡単に説明すると、 text = "ここに{}を差し込み" print(text.format("テキスト")) という形になります。  差し込み方はこれ以外に、複数差し込む場合に差し込み位置を指定したり、ディクショナリから差し込むなどいろいろな型式を用いることが出来ます。詳しく説明すると長くなってしまうので、ここでの説明はこんな程度にしておきます。 改行を含んだ複数行のテキストに対する差し込み  さて、ここから本題に入るわけですが、冒頭に話したように複数行のテキストでも一行のテキストと同じようにformatメソッドで差し込みが行えます。 複数行のテキスト  Pythonで1つの文字列変数に複数行を入れる場合は3重クォーテ

gnuplot : 線プロット(lines)で線がぐちゃぐちゃに結ばれてしまう場合の対処(Piped-dataを用いる)

イメージ
線プロットで線がぐちゃぐちゃに結ばれてしまう  gnupotでデータファイルを線プロット(lines, linespoints)するとき、線の結び方がぐちゃぐちゃになってしまうことが起こりえます。例えば、以下のようなグラフ。 線がぐちゃぐちゃに結ばれてしまう例 これはちゃんと結ばれていれば以下のグラフのようになるはずのものです。 通常の線プロットの例 なぜ線がぐちゃぐちゃに結ばれてしまうか  線プロットで線がぐちゃぐちゃになってしまうのは、データファイルのデータ並びが関係します。gnuplotでは線プロットの線の結び方はデータの並び順となります。データの数値の大きさではなく。 データの並び方と線の結び方の関係について  データの並び方、簡単な例で説明すると通常は以下のようになっているでしょう。 1    1 2    5 3    1 4    5 5    1 1列目がx軸、2列目がy軸のデータで、行が進むごとにx軸の大きさが小さい方から大きい方になるように並びます。これをプロットすると以下のようになります(分かりやすいようlinespointsでプロットしています)。 通常のデータ並びのグラフ例  この場合は特に問題はなく、通常通りの線プロットになります。では、次に同じデータを用いてデータの並びを以下のように適当に入れ替えてみます。 3    1 5    1 2    5 4    5 1    1  これをプロットすると以下のようになります。ぐちゃぐちゃに線が結ばれるのが見て取れます。 データ並びを入れ替えた場合のグラフ例  データ点数が少ないのでそれほどぐちゃぐちゃにはなっていませんが、これがもっとデータ点数が多くなると一番始めに説明したグラフのようになるわけです。また、このグラフを見て分かるように、x=3の次がx=5、その次がx=2というようにデータの並びに沿って線が結ばれているのがわかります。あえてこういう結び方をしたい場合はともかくとして、通常通りに線を結びたい場合はデータ並びを修正する必要があります。  以上より、通常通りの線の結び方にしたい場合は、データの並びを数値の大きさ順で並び替えてやればいいことがわかります。 データ並びを修正する  データフ

スポンサーリンク