X



gnuplot を使おう。 その3
0534名無しさん@お腹いっぱい。
垢版 |
2016/04/20(水) 20:31:45.62
$dataに限らずデータファイルでもいいんですが
plot、splot以外から行や列を参照する方法ってあるんですか?
0535名無しさん@お腹いっぱい。
垢版 |
2016/04/20(水) 20:35:17.13
>>531
次のようなスクリプトを書きました。
# スクリプト
$data_dgrid3d << EOD
# 要因A 要因B 結果
30 50 20
60 80 90
50 70 80
30 60 60
55 60 55
40 70 60
30 80 20
80 80 40
40 50 95
EOD

set dgrid3d

set table 'dgrid3d_table.txt'
splot $data_dgrid3d using 1:2:3
unset table

unset dgrid3d
unset logscale xyz
set xrange [0:100]
set yrange [0:100]
set zrange [0:100]
set xlabel 'x'
set ylabel 'y'
set zlabel 'z'
splot 'dgrid3d_table.txt' using 1:2:3 with lines, \
$data_dgrid3d
0537名無しさん@お腹いっぱい。
垢版 |
2016/04/20(水) 20:43:11.74
>>535

あえてtableへのプロットをデータブロックにしないで、ファイルにして先頭のほうだけ書いたのがこれ


# Surface 0 of 1 surfaces

# Curve title: "$data_dgrid3d using 1:2:3"

# IsoCurve 0, 10 points
# x y z type
80 50 58.7832 i
80 53.3333 58.5131 i
80 56.6667 58.2234 i
80 60 57.8866 i
80 63.3333 57.5448 i
80 66.6667 56.982 i
80 70 56.0251 i
80 73.3333 53.6147 i
80 76.6667 49.451 i
80 80 40 i
0539名無しさん@お腹いっぱい。
垢版 |
2016/04/20(水) 20:52:05.23
>>534

なお,最近の開発版ならarrayがあり配列が使える。
データファイルから配列に格納するやり方は以下を参照。

FILE = 'orbital_elements.dat'

stats FILE index 2 using 2 prefix "A"
array Data[A_records]

stats FILE index 2 using (Data[int($0+1)] = $2) prefix "B"
0542名無しさん@お腹いっぱい。
垢版 |
2016/04/20(水) 21:44:17.13
> よく考えたらimpulsesの根元が元データの分布を示していることに気が付きました。

そうか。これをつかえば、平面の方程式なんていらないし、

tableで書き出してみてデータ構造みてみて
statsでデータを取り出していくとよいかも。
0546名無しさん@お腹いっぱい。
垢版 |
2016/05/08(日) 03:29:57.64
>>544
CVSに上げてもらえたのはうれしいんですが、CVSからダウンロードしてビルドは
やったことないです。
Windowsのコンパイル環境はcygwinとかが必要になるんでしょうか?ってレベルです。
やってやれないことはないと思いますが、悩む感じです。

「改善されている」と言うことですが、ざっと動作確認をして頂いたということでしょうか?
もし、そうであればそれで動作確認ができたと報告してしまおうかと。
0547名無しさん@お腹いっぱい。
垢版 |
2016/05/08(日) 03:45:34.60
>>544
It may need to be larger, however. とコメントがありましたが
軸とラベルの間の隙間は狭い(元のまま)のでしょうか?
この辺りは好みもあると思いますので、xlabelとylabelとzlabelでバランスが
おかしくなければといったとこですが、どうなんでしょう?
0548名無しさん@お腹いっぱい。
垢版 |
2016/05/08(日) 11:03:35.39
CVSのバイナリが公式ページに上がっているのを見つけました。
わざわざビルドして頂いたのでしょうか?
テスト中です。
0549名無しさん@お腹いっぱい。
垢版 |
2016/05/08(日) 11:31:27.54
解決されているのを確認できました。
ただ、角度によっては目盛のラベルが軸に寄り過ぎている場合があるので
余裕があったらそこまでやってもらえるとうれしいといった感じで
コメントしておきます。

ありがとうございます。
0557名無しさん@お腹いっぱい。
垢版 |
2016/05/08(日) 12:23:21.37
開発の中心にはいませんが,サポートメンバーの一人であることは確かです。
公式リリースの64ビット版のwindows版バイナリは私がビルドしたものです。
gnuplotは日本人がかなり活躍しているオープンソース系のプロジェクトの
一つです。’(ほかにもありますが)
0558名無しさん@お腹いっぱい。
垢版 |
2016/05/08(日) 12:30:17.38
私のパソコンで動いてるgnuplotをビルドして頂いていたとは存じ上げませんでした。
いつもありがとうございます。
0559名無しさん@お腹いっぱい。
垢版 |
2016/05/11(水) 05:30:28.90
>>546
遅レスですが,
>Windowsのコンパイル環境はcygwinとかが必要になるんでしょうか?

windows 上でビルドするには,
1.msys2上で,通常のwindows版をビルドする方法と
2.cygwinでcygwin版をビルドする方法
3.Microsoft Visual Cでwindows版をビルドする方法
があります。
3.は私がわからないので略。
以前は,2.のほうが楽だったのですが,msys2が登場し,充実してきたので,
今では,1と2では難易度はほとんど変わりません。

msys2上でのgnuplotのビルドは >>465 をご覧ください。
0561名無しさん@お腹いっぱい。
垢版 |
2016/05/13(金) 21:02:14.12
>>560
ビルドインのreadlineを使うか、GNU readlineを使うかで違ってくると思う。
私は窓使いなのでビルトインのreadlineしか使えない。
昔に比べるとビルトインのreadlineの性能は良くなった。良くしたいならば自分でコミットするしかない。
GNU readlineはわからないが履歴の操作はある程度できるんじゃないかな。
その辺はGNU readlineを学ぶしかないと思う。
0562名無しさん@お腹いっぱい。
垢版 |
2016/05/16(月) 19:37:04.27
times.datは以下の形式で
2015/12/29 1
2015/12/29 2
2015/12/29 3
...

times.gpは
set xdata time
set timefmt "%Y/%m/%d"
set format x "%Y/%m/%d"
set xtics rotate by -45
set xrange ["2015/12/29":"2016/05/15"]
plot "times.dat" using 1:2 notitle with linespoints pointtype 7
persist

これで gnuplot times.gpで描写されない
何が間違っているのだろうか?
0563名無しさん@お腹いっぱい。
垢版 |
2016/05/16(月) 20:34:15.05
描画されたけど
0564名無しさん@お腹いっぱい。
垢版 |
2016/05/16(月) 21:08:57.72
>>653
検証ありがとう
gnuplot-x11 をインストールしたら動いた
昔はgnuplot で行けたような気がしたが
type set to unknown
になるので -x11の方installで解決
0565名無しさん@お腹いっぱい。
垢版 |
2016/05/17(火) 11:16:11.30
>>564

x11 ターミナルは、昔からgnuplot-x11 がないと原理的に動かない。今は、wxtとかqtとかが主流だからx11はオプションインストールになったのかな。
0566名無しさん@お腹いっぱい。
垢版 |
2016/05/18(水) 21:20:35.21
>>560 >>561

ビルトインのreadline.c をちょっと読んでみた。
http://gnuplot.cvs.sourceforge.net/viewvc/gnuplot/gnuplot/src/readline.c?revision=1.64&;view=markup

補完もヒストリもあるけど、ソース中のコメントにもあるようにGNU readlineのサブセットのようだ。

自分の使っているreadlineがどちらかを調べることから始めたらいかがですか。また、Unix上ならgnuplotのビルドさほど難しくないし、確かGNU のライブラリとdevをいれていれば、GNU readlineがconfigureで優先されるはず。
0567名無しさん@お腹いっぱい。
垢版 |
2016/05/19(木) 03:26:22.81
>>565
debian系は昔からGUI抜きで動くのがgnuplotってパッケージ
画像ファイルの出力に使う
x11なしの実行形式を出来るだけ作るのがdebian系の流儀で昔から変わらない
0569名無しさん@お腹いっぱい。
垢版 |
2016/05/19(木) 14:38:26.81
>>567
ubuntu 14.04
では、gnuplotでsynapticでインストールするとwxtがデフォルトのgnuplot-4.6.4がインストールされ、ついでにgnuplot-x11インストールされました。
interactive terminalなしのgnuplotは、gnuplot-noxでした。

Debianとubuntuでは違うのかな?
0571名無しさん@お腹いっぱい。
垢版 |
2016/05/19(木) 19:12:14.64
>>560
補完やヒストリーを設定するには、GNU readlineをリンクしてビルドするまたはしてあることが必要なようだ。

GNU readlineをリンクしてあればinputrcにカスタマイズを書くことができると思う。

私は、窓上ではxyzzy 上で動くwgnuplot-modeを
linux上ならならemacsのgnuplot-modeを使っているので
readlineのお世話になることがほとんどない。
0573名無しさん@お腹いっぱい。
垢版 |
2016/05/21(土) 06:02:37.99
>>572

質問が曖昧なのでなんとも言い難いですが。

これは、例えばプロットの四角形の領域を軸ラベルの設定などに影響されないようにしたいということですかね。

私もやりたいのですが、いまはターミナルのサイズを調整してやっている。

それなら私も教えて欲しいです。
0575名無しさん@お腹いっぱい。
垢版 |
2016/07/14(木) 12:50:19.62
100x + 200y = 5000が表す平面を描画するにはどうすればいいのでしょうか?
zの関数としては記述できなさそうなので、どうすればいいか分からないです。
0584名無しさん@お腹いっぱい。
垢版 |
2016/09/22(木) 13:04:05.15
一列分の数値列をプロットするときに、一行目の数値で全数値を割ったものをプロットすることは可能?

ほんとは最大値で割りたいが、この場合はとりあえず一行目の数値が最大値であるとする
0586名無しさん@お腹いっぱい。
垢版 |
2016/09/22(木) 18:48:32.47
>>585
すみませんm(__)m。
バージョン 5からの機能と勘違い。
4でもあるバージョンから使えるよう。
お使いのgnuplotで

help stats

で確認してください。
0587名無しさん@お腹いっぱい。
垢版 |
2016/09/22(木) 20:33:19.50
>>585-586
こりゃ便利だな
ありがとう
昨日は結局自作関数を作ったが、今後はこちらを使おうと思う

複数のファイルに対応する場合は順番に読み込んで覚えるしかないのかもしれんが
0588名無しさん@お腹いっぱい。
垢版 |
2016/10/17(月) 17:57:36.43
2番めのプロット色が,デフォルトでdark-greenとなる方法を教えてください.
あの見難い黄緑色が許せません
0590名無しさん@お腹いっぱい。
垢版 |
2016/11/17(木) 17:41:19.08
使用OSはWindows10 Enterprise
gnuplot ver.はVersion 5.0 patchlevel 4です。

wxtターミナルに出力された画像をそのままpngで保存したいです。

set terminal png size XXX, YYY
set output 'test.png'
replot
set output
set terminal wxt

で保存した場合、パソコン画面上のwxtターミナルに表示される画像と比べ、
ラベルの位置などがずれてしまいます。

wxtターミナル右上にある
0591名無しさん@お腹いっぱい。
垢版 |
2016/11/17(木) 17:41:47.13
使用OSはWindows10 Enterprise
gnuplot ver.はVersion 5.0 patchlevel 4です。

wxtターミナルに出力された画像をそのままpngで保存したいです。

set terminal png size XXX, YYY
set output 'test.png'
replot
set output
set terminal wxt

で保存した場合、パソコン画面上のwxtターミナルに表示される画像と比べ、
ラベルの位置などがずれてしまいます。

wxtターミナル右上にある"Export plot to file"をクリックして画像を保存すれば、
希望のものを得られるのですが、
gif動画作成のため100枚程度保存するので時間がかかります。

inputファイルはそのまま使いたいため、何か良い方法はありませんでしょうか?
0592名無しさん@お腹いっぱい。
垢版 |
2016/11/28(月) 22:39:45.32
>>591

wxtの画像をスクリプトでpngには落とす方法はないと思います。
pngターミナルよりpngcairoターミナルの方が、wxtに近い画像が得られます。同じではありませんが、より近くなります。描画エンジンに共通のものを使っているので。

私はpngをバッチで生成するときはpngcairoターミナルを使っています。
0593名無しさん@お腹いっぱい。
垢版 |
2016/12/01(木) 21:00:39.96
数値データをファイルから読み取って2Dグラフにしたいんですが,
plot "datafile" with lines
でdatafileの中身が
0.1 1.2
0.2 1.34
0.3 1.51
0.4 1.7
...
みたいなデータだったら線で結ばれますが,
0.1 1.2

0.2 1.34

0.3 1.51

0.4 1.7
...
みたいにデータ行の前後に空白行がある場合はlinesだと何も表示されません。
データファイルの内容によって,前者であればlinesで線のみ,
後者であればpointsでプロットマークを表示させるようなことがしたいのですが,
いい方法ないでしょうか?
もちろんplotコマンドを打つ段階ではファイルの中身はわからないという前提で。
0595593
垢版 |
2016/12/02(金) 19:49:03.35
説明足りなくてすみません。
前者のデータでは線だけ,後者のデータならポイントだけ,
というふうにしたいんです。
with linespoints にすると,後者はポイントだけになりますが
前者はポイントが線で結ばれる形になりますよね。
0603名無しさん@お腹いっぱい。
垢版 |
2017/03/23(木) 19:10:55.57
最5.0.6の環境で質問があります
3次元空間に4点打って四角形を描写しようとしたのですが
(splot " " using 1:2:3 with linesを使用して)
どうも上手くいかない…というか変な結果が表示されてしまいます。
3.030793 -9.510565 0.602862
3.090170 -9.510565 0.000000
4.539905 -8.910065 0.000000
4.452672 -8.910065 0.885692

2.854945 -9.510565 1.182557
3.030793 -9.510565 0.602862
4.452672 -8.910065 0.885692
4.194325 -8.910065 1.737346

4.452672 -8.910065 0.885692
4.539905 -8.910065 0.000000
5.877853 -8.090170 0.000000
5.764911 -8.090170 1.146712

という座標を持つ3つの四角形を書こうと上記座標列をファイルに入れてsplotで出力すると
ひしゃげた?というか明らかに四角形ではない結果が出るのですが
何かこちら側の方法等に問題があるのでしょうか
0605名無しさん@お腹いっぱい。
垢版 |
2017/03/24(金) 04:51:18.41
>>604
アスペクト比による問題では無いと思います。
なんでしたら上記データを出力して頂ければ幸いです。
ただしく描写されれば、四角形3つでLのような形をしていると思います。
因みに、違う描写ソフト(paraview)にて出力した所、問題無くメッシュが生成されました。
0606名無しさん@お腹いっぱい。
垢版 |
2017/03/24(金) 22:31:27.73
あれ?アスペクト比と思ったけど、そもそもこのデータじゃ閉じないし、そのコマンドだと一筆書きじゃないか?
5.0.6ならそういう描き方できんの?
0607名無しさん@お腹いっぱい。
垢版 |
2017/03/25(土) 05:49:05.96
自分が調べた限り、どのver以降可能になったかは不明ですが、3列の数字4行を1束とするとそれだけで、
1行目:節点1のx,y,x座標
2行目:節点2の...
3行目:節点3の...
4行目:節点4の...
として空間上に節点1から4まで四角形を結んでくれるみたいです
3.030793 -9.510565 0.602862
3.090170 -9.510565 0.000000
4.539905 -8.910065 0.000000
4.452672 -8.910065 0.885692

だけをファイルに入れてsplotしてみると四角形が一つ出来ると思います。
改行して2束目を追加すると四角形が並んで表示されると思います。
しかし、3束目を追加すると何故かおかしくなってしまい、その理由を知りたく質問させて頂きました。
0609名無しさん@お腹いっぱい。
垢版 |
2017/03/25(土) 17:42:38.77
なるほど
この書き方は本来四角形を作る為のものでは無いので
出力した際に意図しない形になってしまう事もある。
ということなら納得です。
座標郡をファイルに書き込み、gnuplotに四角形郡として読み込ませて出力、
という使い方をしたかったのですが、一番簡単だったのが上記の書き方だったので…。

ただ、今まで何回も全く同じ書き方をした座標データで四角形メッシュが問題なく
表示出来ていたので
何故突然今回だけダメになったのか、という疑問もありましてちょっとモヤっとしますね
0614名無しさん@お腹いっぱい。
垢版 |
2017/05/31(水) 23:11:48.25
物理実験で測定したデータを
近似直線と一緒に両対数グラ
フで表示したいのですがcolo
r axis has cb coord of 0; mu
st be above 0 for log scale
と表示され近似直線を表示
することができません。範囲
を絞っても駄目でした。どう
すればいいでしょうか。ちな
みに両対数グラフでない場合
には表示できました。
0616名無しさん@お腹いっぱい。
垢版 |
2017/06/01(木) 01:33:44.57
近似式なんだから、データによっちゃ定義域内で負になっちゃうケースも出てくるだろう
関数値がゼロ以下の時は十分小さな正数に置き換えるように関数の場合分けをすればいい
0617名無しさん@お腹いっぱい。
垢版 |
2017/06/01(木) 06:26:41.10
値域を絞っても駄目でした
0620名無しさん@お腹いっぱい。
垢版 |
2017/06/01(木) 12:00:39.90
gnuplotで再帰使えたか自信ないけど、無限再帰になってない?
f(x)=hoge
g(x)=(f(x)>0) ? f(x) : 1E-8
試してないけど
0621名無しさん@お腹いっぱい。
垢版 |
2017/06/01(木) 23:14:06.58
打ったコードはこんな感じです

set xl "{/Arial-Italic P_1}[Pa]"
set yl "{/Arial-Italic P_2}[Pa]"
set logscale
plot [1:10000][1:10000]"k.dat" using 1:2 title "較正直線"
f(x)=a*x+b
fit f(x) 'k.dat' using (log10($1)):(log10($2)) via a,b
replot 10**(f(log10(x)))

こうすると1つ目のグラフしか表示されず
color axis has cb coord of 0; must be above 0 for log scale !
と出てきます
0622名無しさん@お腹いっぱい。
垢版 |
2017/06/01(木) 23:23:01.48
無限再起ってのはよくわかりません
0623名無しさん@お腹いっぱい。
垢版 |
2017/06/02(金) 23:19:25.11
replotは前回のplotした関数を呼び出すから、一つ目しか描かれんのが当然
言い方が正しいかはわからんが、global に定義してないから、最後の関数はあらゆるxに対して定義されてるのでエラーが出る

もう数年Gnuplot 使ってないから、仕様が変わってたらスマンコ
0629名無しさん@お腹いっぱい。
垢版 |
2017/07/12(水) 21:09:35.86
Windows platform でのCVS ソースの要求がwindows 7以降になりました。

ChangeLogより

2017-07-07 Bastian Maerkisch <bmaerkisch@web.de>

* src/syscfg.h: Minimum required API version is Windows 7 by
default. Vista and XP are end-of-service.
0630名無しさん@お腹いっぱい。
垢版 |
2017/07/25(火) 15:12:04.08
媒介変数表示した円とy=x**2のグラフを同時に表示したいのですが
どうしたら良いでしょうか
円と2次関数の表示については別々の表示は出来ますが
現在はどちらか一方しか表示できず困っています。

set xrange [-3:3]
set yrange [-3:3]
set parametric
set size ratio -1
set zeroaxis

plot 1 + cos(t), 1+sin(t)
unset parametric
plot x ** 2
replot
pause -1
レスを投稿する


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