2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    
レス数が1000を超えているけど、まだ書けるかも知れないよ。

gnuplot を使おう。 その3

1 :名無しさん@お腹いっぱい。:2011/08/25(木) 12:15:50.61 .net
グラフ描画ソフト gnuplot のスレ。

gnuplot 公式 Web ページ
http://www.gnuplot.info/

前スレ
gnuplot を使おう。 その2
http://hibari.2ch.net/test/read.cgi/unix/1164719425/

532 :名無しさん@お腹いっぱい。:2016/03/14(月) 04:34:30.95 ID:6dKZEgQeB
>>531
set title '{Θ}' は
set title '{&}'theta;'です。
ここの書き込み自体が文字実体参照つかってますね。^^;

533 :名無しさん@お腹いっぱい。:2016/03/14(月) 04:36:49.44 ID:6dKZEgQeB
>>532
ごめん
set title '{&}'theta;'でなくて
set title '{θ}'
ね。(__)

534 :名無しさん@お腹いっぱい。:2016/03/14(月) 04:38:13.48 ID:6dKZEgQeB
なんどもすまぬ
set term pngはかけた上での話。

535 :名無しさん@お腹いっぱい。:2016/03/14(月) 07:47:16.77 ID:vmtXWVPGU
>>521
>enhanced textでTimes New Romanを指定するのはフォント名にスペースが
>入っているせいかうまくいきません。

と書きましたが,やり方がわかりました。
(ps_guide.pdfやまたはs_guide.psにTimes Romanで例がありました。)

set title '{/Times-New-Roman=18 a}'

536 :名無しさん@お腹いっぱい。:2016/03/14(月) 07:59:09.80 ID:vmtXWVPGU
gnuplotのマニュアルのenhanced textの項に

特殊記号は、8 進文字コードを与えることで数字で指定できます。
例えば、 {/Symbol 245} は、Adobe Symbol フォントの無限大の記号です。
しかし、これは、 UTF-8 のようなマルチバイトエンコーディングではうまくいきません。
UTF-8 環境では、タイプ打ち、そうでなければあなたが望む文字を選ぶような方法で、
マルチバイト列を間接的に入力できるようにすべきです。

で書いてあるので,

set encoding utf8
として,
set title '{/Times-New-Roman π}'
とするのはユニコードがサポートされたあたりからgnuplot的には
正しいやり方だといえるでしょう。

537 :名無しさん@お腹いっぱい。:2016/03/14(月) 11:08:01.43 .net
SVGなら分かるが

538 :名無しさん@お腹いっぱい。:2016/03/14(月) 12:09:04.84 ID:vmtXWVPGU
>>537 確かにそうなんですよね。
latexやhtmlのようなやり方で
記述できればそれに越したことではないと思います。

マニュアルに>>536 のように書かれていて,
それでやれればやれないよりはにましとかなと思います。
(Postscript terminalでの8進数で記述するよりいいかと)

539 :名無しさん@お腹いっぱい。:2016/03/14(月) 13:04:43.68 .net
>>537
教えてー

540 :名無しさん@お腹いっぱい。:2016/03/16(水) 14:52:38.61 .net
HTML, XML, SVGだと みたいに実体参照できる

541 :名無しさん@お腹いっぱい。:2016/03/17(木) 17:39:50.48 .net
>>539 >>540
これってsvg のスクリプトのことですよね。だから、svgターミナルからはできないってことでいいのかな。
svgをはきださせて、スクリプトをエディタで編集するってことでいいんですか?

542 :名無しさん@お腹いっぱい。:2016/03/18(金) 08:35:56.06 .net
>>541
テストしたらこうでした。
pngかgifとかでしか使えないみたい。

set terminal wxt noenhance
plot x title

543 :名無しさん@お腹いっぱい。:2016/03/18(金) 08:36:56.13 .net
>>541
テストしたらこうでした。
pngかgifとかでしか使えないみたい。

set terminal wxt noenhance
plot x title θ
タイトルは「θ」

set terminal png noenhance
plot x title θ
タイトルは「θ」

set terminal svg noenhance
plot x title θ
タイトルは「θ」

(ダブルクオートは書き込めなかったから消してます)

544 :名無しさん@お腹いっぱい。:2016/03/18(金) 10:17:14.76 .net
>>543
情報ありがとう。
便利な機能なので、
feature requestでもだしてみます。

#お前がやれと言われそうですが

545 :名無しさん@お腹いっぱい。:2016/03/18(金) 10:55:00.38 .net
>>544
よろしく。
ちなみに/Symbolでも記号を指定できるんだけどSymbolフォントの扱いが
terminalによってばらばらなんだよね。
確かwxtだとデフォルトのフォントを指定してもSymbolフォントになってしまって
実際にはかっこ悪いフォントが選択される。
pngだとデフォルトのフォントが反映されたような。

546 :名無しさん@お腹いっぱい。:2016/03/18(金) 19:29:25.16 .net
>>545

パソコンから書き込んだら2chブラウザで見れないので、スマホから書き込んでいます。

windowsの文字コード表(起動の仕方は、ググって下さい。m(__)m)を起動してTimes New Romanのフォントを探すとギリシャ文字がでてくるので、これをスクリプトを書いているエディタにコピペします。

enhanced textでは

'{/Times-New-Roman π}'

でπの部分は実際は文字コード表からとってきたコードのフォントです。シングルクォートを使う方がお勧めです。(ダブルクォートでないとできないこともあるようですが。)

wxt だけでなく、色々なターミナルで使える方法です。

547 :名無しさん@お腹いっぱい。:2016/03/19(土) 00:12:01.39 .net
>>546
Times New Roman のようにフォント名にスペースがある場合は、スペースをハイフン(-)で置き換える(Times-New-Roman)のがTipsです。(これで大分悩んだ(*_*))。

548 :名無しさん@お腹いっぱい。:2016/03/19(土) 07:39:58.99 .net
>>543
ちなみにenhanced textでは、{'/:Italic \θ'} のように書く。

549 :名無しさん@お腹いっぱい。:2016/03/19(土) 07:42:47.38 .net
>>548
間違えた。
'{/:Italic \&theta}'

550 :名無しさん@お腹いっぱい。:2016/03/19(土) 10:01:00.52 .net
>>545
feature requestsに
あげました。
https://sourceforge.net/p/gnuplot/feature-requests/440/

551 :名無しさん@お腹いっぱい。:2016/03/19(土) 10:16:33.23 .net
>>550
ありがとう。
どうしてgdを使っているterminalは対応しているのかだけでも分かればすっきりする。

552 :名無しさん@お腹いっぱい。:2016/03/21(月) 15:24:03.53 .net
Unix板なのにWindowsの話ですいません。でも、このビルドツールはunix類似環境で動くので言い訳しておきます。

Build instructions using MSYS2/Mingw-w64

https://sourceforge.net/p/gnuplot/support-requests/199/

このインストラクションにそって開発版のgnuplotのビルドが出来ました。

いい時代になったものだ。

553 :名無しさん@お腹いっぱい。:2016/03/22(火) 17:53:20.30 .net
>>551
http://gnuplot.10905.n7.nabble.com/Why-the-gd-based-terminal-does-support-chracter-entity-reference-tp20037p20039.html

が理由のようです。

予想されたようにlibgdの機能を使っているようです。

他で実装するのは、不可能ではないと思いますが、まあ、やってくれないでしょう。

554 :名無しさん@お腹いっぱい。:2016/03/22(火) 17:56:56.34 .net
とりあえずは、>>546の方法を使って下さい。この方法は、この方法で合理性がある方法なので。

555 :名無しさん@お腹いっぱい。:2016/03/24(木) 11:55:45.02 .net
>>553
やっぱりそうなんだ。
お蔭様ですっきりしました。

556 :名無しさん@お腹いっぱい。:2016/04/03(日) 06:17:01.59 .net
cygwin版gnuplotのcairoベースターミナル(wxt,pngcairo, pdfcairoなど)で
Windowsのフォントディレクトリにあるフォントを使うには,fontconfigで
そのように設定すればいい。

/etc/fonts/ にlocal.confを作成し,

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<!-- /etc/fonts/fonts.conf file to configure system font access -->
<fontconfig>
<dir>/cygdrive/c/Windows/Fonts</dir>
</fontconfig>

と書く。そののち,
$ fc-cache -fv
を実行する。
上は,C:\Windows\Fontsに(まあ普通はそう)にWindowsのフォントがある
場合なのでその他の場合は /cygdrive/c/Windows/Fonts を適宜書き直す。
これでは,全ユーザーに設定がいく。

ユーザー限定では,
~/.local/share/fonts/
または
~/.fonts/

にlocal.confを作成すればよいようだ。
(fc-cache -fvが上の二つを見にいっている。)

これは,gnuplotに限らず,fontconfigでフォントをハンドルしているアプリケーションすべてで
成り立つ設定だ。
これでLANG=Cしなくても,wxtターミナルのフォントがまともになった。

557 :名無しさん@お腹いっぱい。:2016/04/09(土) 01:14:22.79 .net
塗りつぶしていない領域と塗りつぶした領域で点線の色を変えるにはどうすればいいんでしょうか?

set terminal png
set grid front
plot x with filledcurves x1
を実行すると塗りつぶした領域では格子線が白で表示されるので分かりやすいです。

同じような効果を得たいのですが、wxtやpngcairoに出力した場合は点線の色が常に黒になるため
塗りつぶした領域では点線が見づらくなってしまいます。

白と黒の点線を指定できれば同じ効果が得られるんでしょうが
点線の地の色と線の色を両方指定する方法とかないのでしょうか?

558 :名無しさん@お腹いっぱい。:2016/04/09(土) 21:51:44.26 .net
> 点線の色が常に黒になるため
点線が常に黒というのがよくわかりません。

559 :名無しさん@お腹いっぱい。:2016/04/09(土) 21:58:05.31 .net
理解力がなかったm(__)m。gridの点線の話か。
png だけ違うのは、libgdの機能のせいかもしれない。

560 :名無しさん@お腹いっぱい。:2016/04/09(土) 23:21:55.69 .net
>>559
そうだと思うんだけど、塗りつぶしていない領域と塗りつぶした領域で
点線の色を変える方法を知ってたら教えて欲しいです。

561 :名無しさん@お腹いっぱい。:2016/04/10(日) 07:07:40.01 .net
>>560
ここで、答えがつかないようならgnuplot Q&A 掲示板で聞いてみたら?
名前さらすのがいやならハンドルネームでいい訳だし。

562 :名無しさん@お腹いっぱい。:2016/04/10(日) 10:09:03.18 .net
>>561
聞いてみる。
どこが一番活発なんだろう?

563 :名無しさん@お腹いっぱい。:2016/04/10(日) 12:31:15.94 .net
gnuplot Q&A 掲示板に投稿しようとしたら書き込み不可って言われた…。

564 :名無しさん@お腹いっぱい。:2016/04/10(日) 16:49:37.50 .net
gnuplot Q&A 掲示板の3129番に投稿しておいた。

565 :名無しさん@お腹いっぱい。:2016/04/10(日) 19:15:05.90 .net
>>563 gnuplot Q&A 掲示板への投稿は、スマホからでもできますよ。現に3129番への投稿はスマホから。

566 :名無しさん@お腹いっぱい。:2016/04/11(月) 14:34:46.47 .net
>>564
パソコンから書き込もうとしたんですが、だめでした。
代理投稿ありがとうございました。

567 :名無しさん@お腹いっぱい。:2016/04/11(月) 17:34:00.25 .net
>>566

grid線を灰色にかえるという、代替案が掲示板ででました。
これでいいかどうかは、話題主さん次第です。別の回答者が現れるかもしれません。

568 :名無しさん@お腹いっぱい。:2016/04/11(月) 19:54:01.11 .net
>>567
塗り津美している領域と塗りつぶしていない領域で点線の色を変えたいのでちょっと違います。
でも、それを実現する設定はたぶんないんでしょうね。

569 :名無しさん@お腹いっぱい。:2016/04/11(月) 21:29:33.44 .net
なんでこの質問者のレスは全てイラッとするんだろうか…

570 :名無しさん@お腹いっぱい。:2016/04/11(月) 23:40:35.91 .net
>>568
pngターミナルでgridの色分けしているように見えるのは、錯覚らしい。

領域の境目の座標がわかればver. 5
なら、plotコマンドと三項演算子とfor文などつかって強引にやれんことはないかな。

問題は、領域の境目の座標を知ることだと思います。例のように直線ならば簡単ですが。

571 :名無しさん@お腹いっぱい。:2016/04/12(火) 01:48:55.60 .net
>>570
身落とし。set arrowとdo for使うアイディアが出されていました。

572 :名無しさん@お腹いっぱい。:2016/04/12(火) 08:56:05.06 .net
>>571
身落とし => 見落とし
m(__)m

573 :名無しさん@お腹いっぱい。:2016/04/12(火) 11:32:04.61 .net
>>570
なるほど。pngではgridの色と点線が違うことが理由でしたか。
すっきりしました。ありがとうございます。

574 :名無しさん@お腹いっぱい。:2016/04/12(火) 16:50:18.67 .net
gnuplot Q&A 掲示板の書き込み読んだらgnuplotを使い込んでいてすごい。
gnuplotを仕事で使ってるのかな?

575 :名無しさん@お腹いっぱい。:2016/04/12(火) 18:53:19.58 .net
>>574
仕事で使っている人ですよ。私も仕事で使ってます。

掲示板便利ですよ。

576 :名無しさん@お腹いっぱい。:2016/04/12(火) 19:24:08.06 .net
>>575
やっぱり。かなり使い込んでそうだから。
データ分析とかに使うことが多いんですか?

577 :名無しさん@お腹いっぱい。:2016/04/12(火) 21:59:54.21 .net
>>576
論文にのせる図の作成。
日頃の実験データの整理。
自作の機器制御プログラムでのリアルタイムプロット。
fitコマンドによるパラメータ最適化。

等々。

gnuplotに触らない日の方が少ない位です。

本格的データ解析はoctaveでやりますが、gnuplotの方が遥かに使用頻度が高いです。

578 :名無しさん@お腹いっぱい。:2016/04/13(水) 01:34:26.69 .net
>>577
大学の研究ですか。楽しそう。
実験データをまとめて比較したりしているんですかねえ。
使い方のノウハウとかプロセスとかたまってそうでうらやましいです。

579 :名無しさん@お腹いっぱい。:2016/04/14(木) 06:27:39.86 .net
>>574
takeno.iee.niit.ac.jp/~shige/gnuplot/gnuplot.html#info

このぺーじは本当に情報の宝庫です。もしご存じなければご覧あれ。

gnuplot Q&A 掲示板にも頻繁に登場されておーと思う回答をされます。

580 :名無しさん@お腹いっぱい。:2016/04/14(木) 06:30:09.65 .net
>>579
リンクミス。
http://takeno.iee.niit.ac.jp/~shige/unix/gnuplot/gnuplot.html#info

581 :名無しさん@お腹いっぱい。:2016/04/14(木) 07:28:47.85 .net
>>579 >>580
ここも見てみて下さい。
http://www.ss.scphys.kyot-u.ac.jp/person/yonezawa/contents/program/gnuplot/

582 :名無しさん@お腹いっぱい。:2016/04/14(木) 07:30:48.38 .net
>>581
また、リンクミスm(__)m。
http://www.ss.scphys.kyoto-u.ac.jp/person/yonezawa/contents/program/gnuplot/

583 :名無しさん@お腹いっぱい。:2016/04/14(木) 14:14:45.21 .net
サイトの情報ありがとうございます。
読んでみます。

584 :名無しさん@お腹いっぱい。:2016/04/15(金) 23:02:56.09 .net
gnuplot+gawkの環境で、fileAの3列目を横軸に、fileBの5列目を縦軸にグラフを描くにはどうすれば良いですか?

585 :名無しさん@お腹いっぱい。:2016/04/15(金) 23:36:36.37 .net
>>584
awkは基本的に一つのテーブル型のデータファイルを手抜きして操作できるスクリプト。
二つのデータファイルをあつかうにはpasteコマンドでファイルを連結させるのが常套。
pasteを使うのが前提ならばawkは不要。

http://folk.uio.no/hpl/scripting/doc/gnuplot/Kawano/datafile3.html#paste

586 :名無しさん@お腹いっぱい。:2016/04/16(土) 00:00:32.74 .net
時間分解能の違う2種類の時系列データで同時刻の際の相関を見るとかだと
awkの連想配列が便利と言えば便利かもね

587 :名無しさん@お腹いっぱい。:2016/04/16(土) 00:50:28.09 .net
>>585
ありがとうございました
思った通りに動作しました
>>586
今回は同じだったので異なる場合を見るときは使ってみます

588 :名無しさん@お腹いっぱい。:2016/04/16(土) 18:49:39.25 .net
3次元のグラフの目盛の数字と目盛のラベルが他の軸だったり、軸の線と重なる
ことがありますが、どうするのがいいのでしょうか?
viewやoffsetを調整することはできるのですが、場当たり的な対応であり、
手間もかかるので、うまい対処方法はないでしょうか?

589 :名無しさん@お腹いっぱい。:2016/04/16(土) 21:39:00.43 .net
>>588

これは、難しい。3Dだから。自分にはいわれている場当たり的対応しか、思い付かない。statsも2次元だし。

ダメもとでgnuplot Q&A 掲示板で聞いてみるとか。

590 :名無しさん@お腹いっぱい。:2016/04/17(日) 06:38:01.46 .net
>>588
gnuplot Q&A 掲示板
に投稿してみた。
3140番です。

591 :名無しさん@お腹いっぱい。:2016/04/17(日) 12:00:52.34 .net
>>590
ありがとうございます。

592 :名無しさん@お腹いっぱい。:2016/04/18(月) 01:40:05.39 .net
>>589
viewの角度を元にoffsetを調整することを思いついて試してみたんですが
gnuplotが目盛の表示位置を調整しているため、うまく行かないです。
zを25度回転したあたりで1文字分ずらすようです。
ソースを読めば動作が分かるんでしょうがそこまでできないでいます…。

593 :名無しさん@お腹いっぱい。:2016/04/18(月) 09:16:11.00 .net
だからお前らがソース読めってか?

594 :名無しさん@お腹いっぱい。:2016/04/18(月) 18:07:49.57 .net
>>588 >>592
gnuplot Q&A 掲示板の3142番の回答のようにバグの可能性があります。

bug ticketsに登録できますか?

やり方がわからないならアシストします。

595 :名無しさん@お腹いっぱい。:2016/04/18(月) 19:55:24.22 ID:8GKie5xrY
>>594
z軸の回転角度を26〜154度にするとy軸の目盛が急に軸に近づくのは
おかしい気はしていました。バグなんですかねえ。

bug ticketsに登録したことはないので自信はないです…。
Statusはopenで、Ownerは空でいいと思うし、内容は何とか書けないこともないと思うんですが
Milestone、Priority、Labelsはどうするんだろうという感じです。

596 :名無しさん@お腹いっぱい。:2016/04/18(月) 19:56:58.35 .net
z軸の回転角度を26〜154度にするとy軸の目盛が急に軸に近づくのは
おかしい気はしていました。バグなんですかねえ。

bug ticketsに登録したことはないので自信はないです…。
Statusはopenで、Ownerは空でいいと思うし、内容は何とか書けないこともないと思うんですが
Milestone、Priority、Labelsはどうするんだろうという感じです。

.scに書き込んでしまったので念のため.netからも。

597 :名無しさん@お腹いっぱい。:2016/04/19(火) 00:45:42.25 .net
> Milestone、Priority、Labelsはどうするんだろうという感じです。
ここらは、全部空欄でいいですよ。

私がレポートするときはじめは、気にしてましたが、今は気にしてません。

最初だけは、Anonymousで書き込めますが、やりとりをするにはsourceforgeのアカウントが必要です。アカウント名は、ハンドルネームでもかまいません。

gnuplot Q&Aの回答にあったスクリプトはつけておくことをおすすめします。

598 :名無しさん@お腹いっぱい。:2016/04/19(火) 12:21:11.42 .net
>>597
なるほど。登録してみます。
ちなみにviewの角度を元にoffsetを調整する関数が書けそうなのでそれを
完成させてから合わせてbug ticketsに登録しようと思います。

599 :名無しさん@お腹いっぱい。:2016/04/19(火) 20:19:16.92 .net
>>593
登録しました。
https://sourceforge.net/p/gnuplot/bugs/1781/

対応してくれるでしょうか。

600 :名無しさん@お腹いっぱい。:2016/04/19(火) 20:35:11.04 .net
>>594宛でした。

601 :名無しさん@お腹いっぱい。:2016/04/19(火) 20:39:21.29 .net
なお、>>594さんに対応して下さいということではないです。
誰かに対応してもらえるかなあ?という思いを率直に書いただけです。
あしからず。

602 :名無しさん@お腹いっぱい。:2016/04/19(火) 21:13:46.55 .net
>>601
登録確認しました。

デベロッパ側の返事があるといいですね。

603 :名無しさん@お腹いっぱい。:2016/04/20(水) 02:41:15.26 .net
dgrid3dによる変換後のデータと元データを同じグラフで描画する方法は
あるのでしょうか?

イメージとしては以下の両方のコマンドを描画したいです。
splot "scatter.dat" using 1:2:3 with impulses
set dgrid3d
splot "scatter.dat" using 1:2:3 with lines

ところが、それをしたいと思って以下を実行すると
impulsesも変換後のデータを使ってしまいます。
set dgrid3d
splot "scatter.dat" using 1:2:3 with lines, \
"scatter.dat" using 1:2:3 with impulses

604 :名無しさん@お腹いっぱい。:2016/04/20(水) 02:56:33.70 .net
>>603
解決しました。
set table $dataに一度出力してから$dataとscatter.datを描画すればよかったです。

605 :名無しさん@お腹いっぱい。:2016/04/20(水) 03:19:11.33 .net
>>604
解決したと思ったら問題がまだ残っていました。
dgrid3dで作成されるデータは元データが存在する範囲に限られるので取り得る値であっても
データがなければ曲面は描画されません。

例えば100点満点のテストのグラフを描画したいのでグラフの範囲は[0:100]だけど
実際の最低点は30点で、最高点は90点だった場合、どのように示すのがいいでしょうか?
そのままグラフを示すと曲面が0〜100点を示していると誤解する人が出そうです。
グラフの範囲を[30:90]にするというのも一案だとは思いますが、
グラフの範囲は[0:100]だという前提で、曲面の範囲は30〜90点であることも
誤解なく示すにはどうするのがいいかアイデアを頂きたいです。

606 :名無しさん@お腹いっぱい。:2016/04/20(水) 03:54:50.06 .net
>>605
3項演算子はつかえませんか?
具体例は『3項演算子 gnuplot』で検索してみて下さい。

607 :名無しさん@お腹いっぱい。:2016/04/20(水) 09:25:10.27 .net
>>606
よく考えたらimpulsesの根元が元データの分布を示していることに気が付きました。
必要であればstatで最小値・最大値が分かるのでデータの範囲をbaseの位置に示してもいいでしょうか。

ただ、当初の質問から派生した疑問としてある曲面の上にあるデータと曲面の下にある
データで色分けするにはどうすればいいのでしょうか?
2次元グラフで3項演算子を活用する方法は分かったのですが、3次元の場合の
方法は見つけられていません。
ばらついて分布する元データからdgrid3dで格子の曲面を生成し、
元データがその曲面の上下どちらにあるかを分かりやすく示したい
といった利用方法を想定しています。

608 :名無しさん@お腹いっぱい。:2016/04/20(水) 12:13:43.98 .net
>>667
このあたりのことは、gnuplot Q&A 掲示板でよく登場される竹のさんが深い造形わをお持ちです。

こちらで回答がつかない場合は、gnuplot Q&A 掲示板で質問されたほうが
いいと思います。

609 :名無しさん@お腹いっぱい。:2016/04/20(水) 13:51:37.94 .net
>>603 >>604 >>605 >>607

もっと具体的にモデルデータをつけでもらえませんか。ver. 5ならデータブロックでスクリプト内にデータがかけるので。

また、

set dgrid3d
splot "scatter.dat" using 1:2:3 with lines, \
"scatter.dat" using 1:2:3 with impulses

set tableで外部ファイルに吐き出させたデータ(長ければ、その一部)も書いてもらえませんか?

具体的なことがわからないとどこで質問しても答えはつかないと思います。

610 :名無しさん@お腹いっぱい。:2016/04/20(水) 14:18:22.00 .net
>>609
2つの変量が結果に作用する傾向を確認したいといったケースを想定しています。
データにはあまり依存しないと思いますので、
例えば以下のデータをプロットする場合はいかがでしょうか。

# 要因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

611 :名無しさん@お腹いっぱい。:2016/04/20(水) 14:23:56.94 .net
>>608
面白いスクリプトを書かれていらっしゃるのを拝見しました。
状況を見てgnuplot Q&A 掲示板の利用も検討してみます。

612 :名無しさん@お腹いっぱい。:2016/04/20(水) 17:19:17.12 .net
>>610

サンプルデータありがとうございます。

まだ、なさりたいことを完全に把握しきれてないので。

>例えば100点満点のテストのグラフを描画したいのでグラフの範囲は[0:100]だけど
実際の最低点は30点で、最高点は90点だった場合、どのように示すのがいいでしょうか?
そのままグラフを示すと曲面が0〜100点を示していると誤解する人が出そうです。
グラフの範囲を[30:90]にするというのも一案だとは思いますが、
グラフの範囲は[0:100]だという前提で、曲面の範囲は30〜90点であることも
>誤解なく示すにはどうするのがいいかアイデアを頂きたいです。

この点は、

set xrange [0:100]
set yrange [0:100]
set zrange [0:100]

ではだめですか?

613 :名無しさん@お腹いっぱい。:2016/04/20(水) 17:59:25.29 .net
>>612
そのような方法もあると思います。
元のデータが分布している範囲を明示する必要があれば>>607の前半の方法も
あるかと思います。

同じような悩みを持った方がいらっしゃいましたらどうしたか
アイデアを共有して頂きたいと思ってました。

614 :名無しさん@お腹いっぱい。:2016/04/20(水) 19:32:34.34 .net
俺もどういうものを作りたいのかいまいちよくわからんけど、grid3dとpm3dの組み合わせとかでいいんけ?
それとも、
ttp://www.phyast.pitt.edu/~zov1/gnuplot/html/bargraphs.html
の一番下のbargraphみたいなの作りたいの?

作りたいグラフっぽい図を示してもらった方が的を射た答が返ってくると思うよ

615 :名無しさん@お腹いっぱい。:2016/04/20(水) 19:43:51.73 .net
あれ?なんかどちらも違う気がするな

616 :名無しさん@お腹いっぱい。:2016/04/20(水) 19:52:42.56 .net
連投(´・ω・)スマソ
曲面の上と下のデータってどういう意味?
grid3d使ったら、データはすべて曲面上に乗るんじゃないの?

617 :名無しさん@お腹いっぱい。:2016/04/20(水) 19:59:07.00 .net
>>607

>ばらついて分布する元データからdgrid3dで格子の曲面を生成し、
>元データがその曲面の上下どちらにあるかを分かりやすく示したい
といった利用方法を想定しています。

dgrid3dは格子ごとの平面を生成します。

まず、x, y座標からどの格子に属するのを知る必要があります。
これは、原点を考慮した割算とfloor関でできると思います。

また、格子の座標がわかるので格子の平面の方程式がわかり、それがわかれば格子上のz座標がわかります。
与えられたデータのz座標が格子上の
z座標より大きいか小さいかてでプロットをかえる三項演算子の実装をします。

文章でいうとこんなところです。
スクリプトにするには、色々考えないといけませんが、今のgnuplotのスクリプトの強力さを考えると実装できると思います。

618 :名無しさん@お腹いっぱい。:2016/04/20(水) 20:00:53.73 .net
>>614
>>605は、こんなグラフを作るにはどうすればいいの?って疑問じゃなくて
こういう場合はどういうグラフにするのがいいんだろう?って疑問なので
どんなグラフがいいのか私も分かりません。
>>607のやり方で対応することにします。
もしも、同じような疑問を持たれた方がいらっしゃいましたら経験を
共有して頂ければ十分です。

619 :名無しさん@お腹いっぱい。:2016/04/20(水) 20:05:31.01 .net
>>616
生データとそれを元に生成したgrid3dの曲面の両方を描画します。
生データとgrid3dの曲面はずれますので曲面の上下に位置することになり、
そのずれを見やすく色分け表示したいと思いました。

620 :名無しさん@お腹いっぱい。:2016/04/20(水) 20:15:26.41 .net
>>617
2次元の場合でも3次元も場合でも三項演算子の使い方は基本的には同じなんですね。
dgrid3dの曲面は式では与えられないので交点のデータから判定するための
条件を自分で記述する必要があるということですか。
方針はイメージできました。ありがとうございます。

621 :名無しさん@お腹いっぱい。:2016/04/20(水) 20:25:49.23 .net
$dataに格納されたデータにアクセスするコマンドって用意されているんでしたっけ?
配列のようにアクセスできれば理想ですが、そこまでできないにしても
そもそも部分的にデータを取り出すにはどうするんでしょう?
私が知らないだけかも知れませんが。

622 :名無しさん@お腹いっぱい。:2016/04/20(水) 20:31:45.62 .net
$dataに限らずデータファイルでもいいんですが
plot、splot以外から行や列を参照する方法ってあるんですか?

623 :名無しさん@お腹いっぱい。:2016/04/20(水) 20:35:17.13 .net
>>619
次のようなスクリプトを書きました。
# スクリプト
$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

624 :名無しさん@お腹いっぱい。:2016/04/20(水) 20:38:35.55 .net
>>619
適当にマウスで回転させてスクショをとったのが下。
http://www.geocities.co.jp/tmgpltwin/Files/20160420.png

ようするになさりたいことはこのグリッドの上と下でマーカの種類や色を変える
ということですよね。

625 :名無しさん@お腹いっぱい。:2016/04/20(水) 20:43:11.74 .net
>>623

あえて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

626 :名無しさん@お腹いっぱい。:2016/04/20(水) 20:51:04.51 .net
>>622

以下参照
http://www.ss.scphys.kyoto-u.ac.jp/person/yonezawa/contents/program/gnuplot/array.html

627 :名無しさん@お腹いっぱい。:2016/04/20(水) 20:52:05.23 .net
>>622

なお,最近の開発版なら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"

628 :名無しさん@お腹いっぱい。:2016/04/20(水) 20:52:24.16 .net
>>624
そういうことです。

629 :名無しさん@お腹いっぱい。:2016/04/20(水) 21:01:00.70 .net
>>626
statsで1行だけ読み込むとはすごい裏技です!

630 :名無しさん@お腹いっぱい。:2016/04/20(水) 21:44:17.13 .net
> よく考えたらimpulsesの根元が元データの分布を示していることに気が付きました。

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

tableで書き出してみてデータ構造みてみて
statsでデータを取り出していくとよいかも。

631 :名無しさん@お腹いっぱい。:2016/04/20(水) 22:58:54.29 .net
>>630

ちと勘違い。
impulsesはdgrid3dでは格子点に降りるのであった。
>>630 に書いたことは忘れてください。m(__)m。

296 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
名前: E-mail (省略可) :

read.cgi ver.24052200