X



gnuplot を使おう。 その3
0002名無しさん@お腹いっぱい。垢版2011/08/25(木) 12:17:02.26
■過去スレ
gnuplot を使おう。
http://pc8.2ch.net/test/read.cgi/unix/1002453983/


■役立ちそうなページ
gnuplot tips (not so Frequently Asked Questions)
http://t16web.lanl.gov/Kawano/gnuplot/

gnuplot (Takeno Lab) 日本語まぬある
http://takeno.iee.niit.ac.jp/%7Efoo/gp-jman/

GNUPLOTの第一歩
http://lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/gnuplot-intro/

gnuplot tips
http://wwwnucl.ph.tsukuba.ac.jp/~inakura/gnuplot/gnuplot.html
0012名無しさん@お腹いっぱい。垢版2011/08/30(火) 15:52:19.28
>>10
いや、それは即死じゃない
980越えて24時間レスがなかったら落ちるのは全板共通
即死ってのは立ったばかりのスレが引っかかるやつ

>>11
ありがと
じゃもう大丈夫か
0014名無しさん@お腹いっぱい。垢版2011/09/20(火) 11:45:58.77
前スレの972で
>wgnuplotで起動して最初にplotするときだけ時間が異常にかかります
ですがgnuplot\binary\etc\fontsにあるfonts.confを編集すればTEMPで指定してあるところ以外にも自由におけるようです
ttp://swordfish.s53.xrea.com/2009/11/18/p848/ gimpですが同様の方法で変更できました
0018名無しさん@お腹いっぱい。垢版2011/10/07(金) 01:02:24.78
Fortranのバイナリ形式で出力したデータをgnuplotでプロットしたいのですが、
どう書けば良いかわからないので教えてください。
以下のように出力したデータ
(円柱座標系、R方向,Z方向に0.02mごと、theta方向に1度ことに出力)を、
k=0で指定されるR-Z断面について、Bz成分の強度のグラフをpm3dで描きたいです。

write(10) intA, intB, intC, intD ! 4byte+単精度整数×4+4byte=24byte
write(10) realA, realB, realC, realD ! 4byte+倍度浮動小数点×4+4byte=40byte
do k = 0,359 ! ← 円柱座標系のtheta方向
write(10) ((Bx(i,j,k), By(i,j,k), Bz(i,j,k), i=0,100), j=0,100)
end do

これをプロットしようと、以下の様に途中まで書きましたが、
formatやusingをどのように書けば良いのか教えてください。

splot 'fort.10' binary \
skip=64 \
format="%*int%???%*int" \
endian=big \
array=(101,101) \
scan=xy \
dx=0.02 \
dy=0.02 \
using ? with pm3d title'B_{x}'

gnuplotのバージョンは4.4、Fortranのコンパイラはifortを使っています。
001918垢版2011/10/07(金) 01:19:15.89
追記
Bx、By、Bzはいずれも倍精度実数です。
0020名無しさん@お腹いっぱい。垢版2011/10/18(火) 21:28:53.26
windowsのgnuplotのwxtでdashを使いたいんだけど無理なのかな?
アンチエイリアス機能が便利でそのままコピペして使いたい
他の方法でdash扱ってると面倒すぎる
0023名無しさん@お腹いっぱい。垢版2011/11/11(金) 19:11:51.83
データのうち、一部分だけ別のpoint typeでプロットしたいのですができますか?
全ての点をlineでつなぎぐので別々にプロットするのはなしでお願いします。
0024名無しさん@お腹いっぱい。垢版2011/11/11(金) 19:51:25.96
すいません自己解決しました。
0025名無しさん@お腹いっぱい。垢版2011/11/20(日) 02:23:59.37
Windows7でgnuplot4.4.4を使っているのですが、EPSを作成する際にラベルに日本語を使用した場合、
数字などの半角文字の文字間隔が広くなってしまい、見栄えが悪く困っています。

例えば
http://www.obihiro.ac.jp/~suzukim/masuda/utils/gnuplot.html
ここに解説されている「日本語を含むEPSファイルの保存」のとおりにEPSを作った場合、
http://www.obihiro.ac.jp/~suzukim/masuda/utils/gnuplot_lc_eps.png
のような出力が欲しいのですが、私の環境では
http://www.dotup.org/uploda/www.dotup.org2282634.png
のように出力されてしまうわけです。

どなたか解決方法を教えていただけないでしょうか。
0026名無しさん@お腹いっぱい。垢版2011/11/20(日) 06:22:39.52
手元にgnuplot-4.4.4がないので,cvs版(4.5)でやってみました。
フォントを"GothicBBB-Medium-83pv-RKSJ-H" で指定して
shift-jisでやったところお望みに近いグラフができました。
ちなみにWindows XPです。
0028名無しさん@お腹いっぱい。垢版2011/11/20(日) 07:13:11.15
gnuplot-4.4.4をダウンロードしてやってみました。
私の環境ではEUCでは,postscriptファイルが壊れて見れませんでした。
"GothicBBB-Medium-83pv-RKSJ-H"  shift-jis
"GothicBBB-Medium-UniJIS-UTF8-H" UTF-8
でうまくいきました。ghostscriptのバージョンなどにもよるかもしれませんね。
002925垢版2011/11/20(日) 17:23:03.60
>>26-28
今まではGhostscript9.02を使っていたのですが、9.00を使ったところ問題なく出力されました。

ありがとうございました。
0033名無しさん@お腹いっぱい。垢版2011/12/05(月) 15:16:55.97
Windowsで特定のアプリケーションのCPU使用率と測定開始時間から終了時間までを測定しGnuplotを使いグラフにしたいのですがCPU使用率を計るにはどうしたらよろしいでしょうか?
0035名無しさん@お腹いっぱい。垢版2011/12/27(火) 20:09:13.44
gnuplot -p scriptfile.gp

なんて感じで、スクリプトファイルを読み込ませて起動したとします。
この時、scriptfileg.gp の中で gnuplot が読み込んだスクリプトファイルの名前を取得する事ってできるでしょうか?
0036名無しさん@お腹いっぱい。垢版2011/12/28(水) 02:55:50.93
俺は label とかに TeX 使いまくてたから、今だに plus 使ってるよ。。。
どうしたら良いのか。。。
0037名無しさん@お腹いっぱい。垢版2011/12/28(水) 12:42:42.20
>>36
epslatexとかどう?
gnuplot走らせるところから、出力されたTeXファイルにヘッダ加えてコンパイル、目的の形式に変換
までスクリプトで自動化すればそう面倒ではないけど
0038名無しさん@お腹いっぱい。垢版2012/01/02(月) 03:58:17.20
いや、4系の高機能に惹かれるのだが、これまでの資産のせいで乗り移れないってこと。
両方入れれば良いのだが、FreeBSDのポーツだと排他的だし。。。
0040名無しさん@お腹いっぱい。垢版2012/01/17(火) 08:20:50.04
グラフをプロットして出力するとデフォルトだと横長の画像が出力されるけど
これを4:3の大きさに指定したり、グラフの枠を指定して(できればピクセル単位で)出力ってできる?
x軸y軸で4:3を比率調整で作っても、それがx軸y1軸y2軸になるとy2軸側の文字が入って
画像としては4:3だけどグラフが4:3じゃなくなってしまう
0043名無しさん@お腹いっぱい。垢版2012/01/21(土) 04:41:34.75
gnuplot 4.6-rc1がでました。
Windows,Cygwin,DJGPPのバイナリも配布されていま。

Windows 版は,今回からインストーラー形式になっています。
また,日本語環境でインストールはデフォールトは日本語環境となります。

初心者には,インストールがずいぶん簡単になるようです。

http://sourceforge.net/projects/gnuplot/files/gnuplot/4.6.rc1/
0044名無しさん@お腹いっぱい。垢版2012/01/23(月) 05:20:15.28
理論上+∞に発散して閾値を超えると-∞から始まる曲線を描写しようと考えてるんだけど
実際のデータは無限大に行くわけでもなく、普段0.001程度の値が1まで行って-1まで
一気に落ちるって感じになってる。
こういうデータを無限に発散しているように見せるテクってある?
+∞から-∞の点を繋ぐ線を消したい
0047名無しさん@お腹いっぱい。垢版2012/01/25(水) 17:52:13.49
>>45
無限に発散する点と普通に0を通過していく点があるから
2本に分けるにも結構難しかった
もっと効率よくできないものか
>>46
計算ソフトで出力されたデータをgnuplotに読み込ませて描写しているから
関数表現だと無理だと思う
それをプロットに応用できればいいのだが…

計算能力の問題で>普段0.001程度の値が1まで行って-1まで一気に落ちる
という結果になってる。
あくまで例で綺麗に1から-1まで一瞬に移動してくれるわけでもなく
理論上無限だけど、その点は効果が薄いために
他の発散は1から-1まで下がるのに対して0.05から-0.05に下がる点があったり
発散の度合いにも差があって、発散が弱いと普通に0を通っているのか発散しているのか見分けが難しい
0048名無しさん@お腹いっぱい。垢版2012/01/25(水) 18:23:29.11
>>47
>計算ソフトで出力されたデータをgnuplotに読み込ませて描写しているから
> 関数表現だと無理だと思う
Help ternaryをみると次のようなものがあるから,三項演算子とusingで
可能だと思います。
plot 'file' using 1:( $4<0 ? 1/0 : ($2+$3)/2 )
0050名無しさん@お腹いっぱい。垢版2012/01/31(火) 18:13:06.19
>>49
gnuplot のturial.pdf のFigure 5 にlatex terminal での例がある。

set terminal latex
set output "eg4.tex"
set format y "$%g$"
set format x "$%.2f$"
set title 'This is $\sin(x)$'
set xlabel "This is the $x$ axis"
set ylabel "$\\sin(x)$"
unset key
set xtics ('$-\pi$' -pi,\
'$-\frac{\pi}{2}$' -pi/2,\
"0" 0,\
'$\frac{\pi}{2}$' pi/2,\
'$\pi$' pi)
plot [-pi:pi] [-1:1] sin(x)

Latex terminalが使えないならpostscript enhanced でやることが考えられる。
005249垢版2012/02/01(水) 04:48:42.27
>>50
ありがとう!
よく,emf ファイルで出力するからこの方法で大丈夫か
心配だったけど emf も enhance 付ければ出力できるね!
0053名無しさん@お腹いっぱい。垢版2012/02/01(水) 11:24:59.88
>>50 >>52
emfで enhancedでやってみた。
set terminal emf enhanced
set output "sinpi.emf"
set title 'This is sin(x)'
set xlabel "This is the x axis"
set ylabel "sin(x)"
unset key
set xtics ('-{/Symbol p}' -pi, \
'-{/Symbol p} / 2' -pi/2, \
'0' 0 , \
'{/Symbol p} / 2' pi/2, \
'{/Symbol p}' pi)
plot [-pi:pi] [-1:1] sin(x)
0054名無しさん@お腹いっぱい。垢版2012/02/10(金) 21:40:03.29
"Skipping data file with no valid points"のエラーってなんなんですか?
どんなコードもこれが出てきてしまってグラフィックができないです。
0055名無しさん@お腹いっぱい。垢版2012/02/10(金) 23:25:38.50
英語で書かれているとおりだよ。
無効なデータをスキップしましたってこと。
データのフォーマットがおかしいんじゃないの?
0057名無しさん@お腹いっぱい。垢版2012/02/15(水) 01:35:35.43
x データが 48〜120,218〜289 という具合に
データの塊が2つにわかれているんだけど,
これを省略線(波線2つ)を入れて省略するみたいに
表現できないかな?
0060名無しさん@お腹いっぱい。垢版2012/03/12(月) 15:18:16.63
gnuplot version 4.6 released!
0061名無しさん@お腹いっぱい。垢版2012/03/12(月) 19:26:06.94

あららら・・・
インストール
変わっちゃったね?
0064名無しさん@お腹いっぱい。垢版2012/04/09(月) 22:25:18.79
set yrange [0:2e+9]
set format y "%s%c"
としたとき、Y目盛りが
  期待: 500M, 1G, 1.5G, 2G
  実際: 500.000000M, 1.000000G, 1.500000G, 2.000000G
となります。

ソースを見ると、gprintfの%sでは、stdioのprintfの%fが使われているっぽい。
%gなら余計な0は表示されないのに、%fが使われている積極的な理由ってあるのかな?

とりあえずソースいじれば何とかなりそうだけど、
自分だけで使ってるわけじゃないので、それはやりたくないんだよな。
0065名無しさん@お腹いっぱい。垢版2012/04/28(土) 04:15:16.94
4.4以降でterminal windowsとかでemfを吐くと
それをパワポ上でグループ解除すると枠線らしきものが
かなりのでかさで現れて酷いことになる

wxtだと確かに綺麗だけど
ビットマップ扱いで拡大するとボヤけたりepsに変換すると汚くなる
ボヤけないようにemfで保存すると枠線が・・・となる

term windowsだと破線の太さをgnuplot上で太くできないから
仕方なくwxt使ってるんだけど
wxtで出力された見た目のままベクター形式で出力できないのだろうか
0066名無しさん@お腹いっぱい。垢版2012/04/28(土) 18:53:34.37
> wxtで出力された見た目のままベクター形式で出力できないのだろうか

pdfcairo
powerpointで読み込む方法があるのか知らんけど
0067名無しさん@お腹いっぱい。垢版2012/05/03(木) 18:01:13.39
ylabelを左じゃなくて、軸の上に表示したい
0069名無しさん@お腹いっぱい。垢版2012/05/10(木) 16:20:51.55
gnuplot> set pm3d map
gnuplot> splot [:2*pi][:2*pi] sin(x)*cos(y)

ってやるとy軸の範囲が0~7になって上に空白が入っちゃうのってどうやって直したらいい?
0072名無しさん@お腹いっぱい。垢版2012/05/13(日) 12:54:54.09
ver4.6でグラフをemfにしてファイル出力してるんだけど
powerpoint上でグループ解除するとグラフには関係ない謎の透明で巨大な枠が
出現して、作業効率が下がるんだけどこれを解決できないだろうか
ver4.2ではこんなことはなかったんだが
仕様でも変わった・・・?
0073名無しさん@お腹いっぱい。垢版2012/05/18(金) 02:30:06.78
↓みたいなfor文において
plot for [2:3] "hoge.dat" using 1:i
ここでusingにabsなどの処理をしたいときはどうやればいいですか?
using 1:abs(i) としたら案の定駄目でした
0074名無しさん@お腹いっぱい。垢版2012/05/28(月) 22:16:09.31
gnuplot> q=1.60e-19
gnuplot> print q**16
1.84467440737095e-301
gnuplot> print q**20
0.0

上記のように、q=1.60e-19の累乗が大きい値になると、計算結果が0.0になってしまいます。
どうすれば、正確な値がでてきますか?
(次に続く)
0078名無しさん@お腹いっぱい。垢版2012/05/30(水) 00:27:58.73
gnuplotの問題ってわけじゃないね。
何事にも限りがあるってことだ
doubleが64ビットより多い処理系でビルドすればましにはなるかな。
いずれにしろ限りはあるが
0079名無しさん@お腹いっぱい。垢版2012/06/02(土) 15:38:37.78
set xtics (pi)にした時、横軸に3.14,6.28,…じゃなくて
π,2π,…ってするにはどうしたらいいの?
0080名無しさん@お腹いっぱい。垢版2012/06/03(日) 05:14:39.77
set xtics (\
"-2{/Symbol p}" -2*pi, \
"-3{/Symbol p} / 2" -3*pi/2, \
"-{/Symbol p}" -pi, \
"-{/Symbol p} / 2" -pi/2, \
"0" 0, \
"{/Symbol p} / 2" pi/2, \
"{/Symbol p}" pi, \
"3{/Symbol p} / 2" 3*pi/2, \
"2{/Symbol p}" 2*pi \
)
0082名無しさん@お腹いっぱい。垢版2012/06/15(金) 13:18:50.34
1つのグラフに対して上と下のx軸で別の単位を使うことはできますか?
可視光線の透過スペクトルで下に波長(nm),上に波数(/cm)を表示したいです.
下軸の波長を100程度の等間隔にして,上に波数(=10^7/波長)の目盛りを付けられませんか
008573垢版2012/06/22(金) 01:40:41.27
>>81
4.6 patchlevel 0で試したところ (abs($i)) は駄目ですが、 (abs(column(i))) でいけました。
ありがとうございました。

0086名無しさん@お腹いっぱい。垢版2012/07/03(火) 19:49:49.52
負の数をログスケールにしたいんですが...
  set logscale y
  set ytics format "-%g"
  plot 'hoge' using 1:(-$2)
こんな感じでいけますが,x11などの場合で,
いったん普通にプロットしたあと,キー入力でノーマルスケールと
ログスケールを切り替えたいです。

bind で何とかならないかとも思ったのですが,
plot文を変える必要があるため,特定の用途ならともかく,
汎用的にはやるのはなかなか難しそうです。

理想は
  set logscale y -10
とかやると,負数のログスケールになってくれたりするとありがたいんですが...
ちなみにソースを見るとfabsを取っているようで,-10でも10でも同じ結果になります。
008886垢版2012/08/18(土) 21:27:55.95
>>86です。
その後ぱったりとレスが途絶えました。
僕は地雷を踏んでしまったのでしょうか??
0092名無しさん@お腹いっぱい。垢版2012/08/23(木) 17:43:50.75
>>86
ttp://takeno.iee.niit.ac.jp/~shige/unix/gnuplot/gpinfo-2012.html#info-20120823
負の数に対数軸を適用したい、ということと、 キー入力でグラフの線形軸と対数軸を切り替えたい (x11)、 という 2 つの質問 (多分) がありました (86)。
009386垢版2012/08/26(日) 16:38:04.67
>>86です。

竹野先生ありがとうございます。

ちょっと言葉足らずでしたが,やりたいことは,x11ウィンドウで
負数のデータをリニアスケールでプロットした後,キー入力で
(符号を変えた)ログスケールとリニアスケールを交互に切り替えたい,
というものでした。

正数のデータであればlキーやLキーで切り替えられますが,
Yデータが全部負数の場合はエラーになったりします。
一部が負数の場合は正数部分のみが表示されます。

ちなみに,負数のデータというのは,たとえばあるデバイスを流れる
電流のようなものです。電流方向の定義というか電流計を接続する
向きによって同じものが正になったり負になったりします。
しかもバイポーラトランジスタのGummel plotのようにログスケールで
あらわしたいこともよくあります。

gnuplotソース改変も試みましたが,自分のスキルではちょっと無理そうです。
他には,リニアスケールとログスケールを別ウィンドウでプロットし,
gnuplot自身でなく別のツールで切り替えるというようなこともアイデアと
しては考えています。
0094名無しさん@お腹いっぱい。垢版2012/08/26(日) 23:51:59.85
昔、aplacというspiceのパチもんみたいな回路シミュレータでやったな。
spiceでもグラフの切替はできるが、インタラクティブには出来なかった記憶が。
そもそもF77だったし。
0095名無しさん@お腹いっぱい。垢版2012/08/30(木) 21:27:43.82
file='file1.txt'
plot file u 1:2
log=0
bind 'ctrl-l' '\
  if (log==1) \
    unset logscale y; \
    plot file u1:2; \
    log=0; \
  else \
    set logscale y ; \
    plot file u 1:(abs($2)); \
    log=1'
009686垢版2012/09/01(土) 23:36:40.90
>>86です。

>>95さん
いい感じです。変数を使ってbindにplot分を割り当てるのは盲点でした。
自分の目的としてはこれで何とかいけそうです。
ありがとうございました。

0097質問 1/4垢版2012/09/11(火) 07:49:45.81
4.6 をインストールしたのだが、上手く動かない。多分4.6固有の問題じゃない気がする。
 環境は、Windows7 home 64bit
 今までは、4.0 を使っていて、.pltファイルをwgnuplot.exeに関係づけて、、それは正常に動いていた。
 4.6は、ディフォルトで .plt に関係付けられているので今までどうりのファイルでいいのだろうと思い、試して見た。
0098質問 2/4垢版2012/09/11(火) NY:AN:NY.AN
 取りあえず weight06_test.plt として以下のようなファイルを作った。
#cd "D:/USER/TOMURA/Data/体重/"
set term postscript
set title "Body Weight Change (2012/09/01-2013/08/31)"
set xlabel "Date [month/day]"
set xdata time
set timefmt "%Y/%m/%d"
set format x "%m/%d"
set ylabel "Weight [kg]"
set yrange [70:75]
set grid xtics ytics back lw 2
set style line 1 lt 1 lw 1 pt 7 ps 0.5
set output 'weight06_test.ps'
plot 'weight06.txt' using 1:2 with linesp notitle ls 1
これをダブルクリックしても weight06_test.ps は、出来上がらない。 4.0 では、出来上がっていたはず。
0099質問 3/4垢版2012/09/11(火) 07:50:48.72
 試しに同じフォルダに作ったバッチファイルに
"C:\Program Files (x86)\gnuplot\bin\wgnuplot.exe"
と書いて実行して weight06_test.plt の中身をコピペで与えると weight_test.ps が出来上がる。

 #cd のコメントを削って生かしてやっても .plt ファイルのダブルクリックでは、正常に動かないが、
普通に wgnuplot を起動して cd からの weight06_test.plt の中身をコピペしてやると正常に動く。
(weight06_test.ps が出来上がる)

 仕方ないので今は
"C:\Program Files (x86)\gnuplot\bin\wgnuplot.exe" weight06_test.plt
と書いたバッチファイルを作ってそれを実行している。
0100質問 4/4垢版2012/09/11(火) 07:51:19.32
 何とか今まで通りに .plt ファイルをダブルクリックしただけで済ませたいのだが、そういう使い方が間違っているのだろうか?

 昔、plot してから、 set output あたりをを弄ってやると正常に出力されるようなこと見た覚えがあるのだが、自力で見つけられない。

そういうわけで教えて下さい。(Windows の質問はひょっとするとスレ違いでしょうか?)
レスを投稿する


ニューススポーツなんでも実況