• 締切済み

gnuplotで部分描画したい。

gnuplotで部分描画したい。 guplotでplotすると、枠全体に描画されてしまいます。 これを回避しようと、xの範囲を[xmin:xmax]と指定すると、 枠の左端がxmin、右端がxのxmaxに設定されてしまいます。 すなわち私がしたいことは、 枠の両端をxの座標で[fmin:fmax]で指定し、 グラフを[pmin:pmax]の範囲で描画させたいのです。 (fmin < pmin < pmax < fmax) どのようにすればいいでしょうか。

  • 科学
  • 回答数2
  • ありがとう数32

みんなの回答

  • P-mann
  • ベストアンサー率62% (56/89)
回答No.2

こんなマニアックな関数、誰が考えたのやら・・・。 自分もメモらせてもらいました。 参考URLに以下の方法が記載されています。 1. 以下の関数を用意する。 range(x, x1, x2) = log10(10*((sgn(x-x1)+1)/2 * (-sgn(x-x2)+1)/2)) # .gnuplotやgnuplot.iniに書いておけばいいそうです。 2. set xrangeする。 set xrange [0:10] # ご指定のものでは set xrange [fmin:fmax] 3. 以下のようにしてplotする。 plot x**2 * range(x, 1, 5) # ご指定のものでは range(x, pmin, pmax)

参考URL:
http://adlib.rsch.tuis.ac.jp/~akira/zemi/gnuplot/tips.htm
  • 7jutdg
  • ベストアンサー率0% (0/1)
回答No.1

このサイトなら解決してくれますよ!たぶん。 http://www.fenix.ne.jp/~cdrtk/misc/gnuplot/plot26.html

参考URL:
http://www.fenix.ne.jp/~cdrtk/misc/gnuplot/plot26.html

関連するQ&A

  • Javaからパイプでデータ送信しGnuplot描画

    大変お世話になります。 以下のスロットで、Javaから単純にGnuplotのsin(x)コマンドを実行させ、描画される方法が紹介されていました。 http://okwave.jp/qa/q5427703.html 今回、上記の改良として以下の2点についてご質問させて頂けますでしょうか。 1)Java側で、例えば y=sin(x) の、x値(for文により生成)、y値を計算させ表示。 同時にこの、x値、y値を(多分)パイプ経由で、Gnuplot側に送りそれを描画させる方法。 (Javaから"plot sin(x)"を指示するのではなく、Gnuplotにはデータ値を送付) 2)及び上記描画(プロット)表示を、アニメーション的に描画される方法。 多分、こちらもJava側でGnuplot向けの描画コマンド中にfor文を用意し、x値とそのy値のセットを順次・動的にGnuplot側に送り出す事が必要と思います。 (C言語では同様のアニメーション表示が出来ている記載が別webにあり、sin(x)波がニョロニョロと動くように描画されています) http://ayapin-film.sakura.ne.jp/LJ/Docs/40th.pdf http://www.eng.kagawa-u.ac.jp/~haruna/memo/gnuplot/gnuC.html http://kabuto.phys.sci.osaka-u.ac.jp/~yuhii/pc/gnuplot_animation.html 以上2点をご存知でしたら、教示して頂きたいと思います。 ご理解頂ける方がいらっしゃいましたら、ご指導宜しくお願い致します。

  • Scilabを使ったジュリア集合の描画プログラム

    今、Scilabを使用してジュリア集合(充填およびそれ以外を含む集合)を描画するプログラムを書いています。 以前書いたC言語のプログラムをもとに書いているのですが、正確に描画できません。どうしたらよいでしょうか。教えてください。 与える条件は右上と左下の座標(複素数形式)と定数Cの値です。 以下に掲載したのが製作したプログラムです。 よろしくお願い致します。 //描画エリアの右上と左下の座標を複素数で設定する Z =[ -1.2-1.2*%i;1.2+1.2*%i]; //複素定数(C)を設定する C=0+0*%i; //描画エリアのx座標とy座標の各最小値と最大値を計算する。 xmin = min(real(Z)); xmax = max(real(Z)); ymin = min(imag(Z)); ymax = max(imag(Z)); Cr = real(C); Ci = imag(C); //描画点数を800×800に設定する。 N = 800; //各増分を計算する。 dx = (xmax-xmin)/(N-1); dy = (ymax-ymin)/(1-N); //プロットデータを"0"で初期化 map=zeros(N,N); //ジュリア集合の描画 i=1; for X=xmin:dx:xmax j=1; for Y=ymax:dy:ymin for k=1:30 x = X ^ 2 - Y ^ 2 + Cr; y = 2 * X * Y +Ci; if x^2 +y^2 > 4 then break; end map(j,i)=k; X=x; Y=y; end j=j+1; end i=i+1; end //プロットするための設定 Re = xmin:dx:xmax; Im = ymax:dy:ymin; clf(0); Sgrayplot(Re,Im,map');

  • グラフ描画コンテンツのgnuplotの使い方について質問します。

    グラフ描画コンテンツのgnuplotの使い方について質問します。 グラフを書く際に、範囲を分けて書きたいのですがどのようにすればいいのでしょう? 具体的に言いますと、F(x)=x のグラフを x軸 -5から0までの範囲、g(x)=x*xのグラフを x軸 0から3までの範囲で描写したいときに、どう打ち込めばよいのでしょうか?

  • gnuplot でこのような濃淡グラフを書けないでしょうか?

    (x座標 y座標 値)という形式のデータで次のようなものがあります 1 1 32.4 1 2 23.4 .......... .......... 1 50 65.2 2 1 23.1 2 2 91.9 .......... .......... 2 50 73.2 .......... .......... 50 49 26.8 50 50 76.8 これを、二次元(x,y)のセル上で 50×50の濃淡プロットを作るには どうすれば良いでしょうか? gnuplotでなくてもOKです。 最初はexcelでやろうとしたのですが、思いの外大変でした。

  • gnuplotの使い方が・・

      先日、初めて学校でgnuplotを習ったのですが、 saveコマンドの使い方がよくわかりません。マニュアルには、「それまで描画した最後のグラフを作成する手順がファイルに保存される」とあり、とりあえず、  >set samples 200 >set xrang [-10:10] >plot sin(x) としてサインのグラフをかいてみて その後  >save ''graph.plt'' として保存しようと思ったのですが no such directly or file と表示され 保存できません。どうずればできるのですか。出力先とか を変更するのですか。よくわかりません。どなたか教えて下さいお願いします。

  • Scilabのsubplotのグラフ描画範囲の指定

    Scilabのsubplotを使った時に、それぞれのパネルで描画範囲を別々に指定したいのですが、やり方がわかりません。 zoom_rectでは個別の設定ができませんでした。良い方法をご存知の方は教えてください。 x = linspace(0,2*%pi); subplot(2,1,1); plot(x, sin(x)); zoom_rect([0,-1,2*%pi,1]); // 上パネルはこの範囲で描画したい subplot(2,1,2); plot(x, 0.1*sin(x)); zoom_rect([0,-0.1,2*%pi,0.1]); // 2回目の指定で上パネルも再設定されてしまう 宜しくお願いします。

  • Gnuplotについて エラーメッセージ

    Gnuplotの使い方を覚えたくて勉強しています。 オプションを指定した上でプロットしようと、以下のように入力したところ、 plot [-5:5] f(x) axes x1y1 title "fx" with lines, a=1.0, b=0.16, f(x)=a*sin(x)+b*sin(3*x) 以下のようなエラーメッセージが表示されました。 function to plot expected プロットの文法が間違っていたのでしょうか。 このメッセージの意味するところがわかりません。 また、このようなエラーメッセージに遭遇した際に どのように対処すべきか、書かれたサイトなどが ありましたらお教えください。 (わたしが探した限りではみつかりませんでした) よろしくおねがいいたします。

  • gnuplotでのグラフ作成について

    タイトルに在るとおりgnuplotを使用してのグラフ作成について質問させていただきます。 作成したいグラフの数式は、 z=h(x,y) h(x,y)=1/1+√<x^4+y^4> ×{xsin(4√<x^4+y^4>)+ycos(√<x^4+y^4>)} ただし、 x と y の範囲は -3 から 3 まで というものです。こういった形で数式を書くことに慣れていないため、見づらいところ多々在るでしょうが、ご容赦ください。 恥ずかしながらgnuplotというソフトに触れることが初めてなため、検索などを利用して自分なりに調べた結果なのですが。 1 h(x,y)=~ で h の数式を設定。 2 set xrange[-3:3] 3 set yrange[-3:3] で x y の範囲を指定。 4 sprot h(x,y) でグラフを作成する という流れになるのではないか、ということがなんとなくですがわかりました。 ここで私は、x yの範囲を指定後、h をプロットしようとするところで、hの情報が不足している(?)とのメッセージにて弾かれてしまいます。 恐らく私の、h の数式入力に不備が在るのだろうと思います。 平方根をsqrt 乗数は**n になることはわかっているのですが、どうにも手詰まりです。 お力添えをいただけないでしょうか。よろしくお願いします。

  • DirectXで曲面の描画

    DirectX9で曲面の描画を考えています。 x=0.0~10.0、y=0.0~10.0、z=exp(-x^2-y^2)といった座標を与えて、 波を打つような曲面を作成したいのですが (QNo.2528542のような滑らかな曲面でなくてもよいです) 自分でメッシュを作成することで実現可能なのでしょうか? メッシュを作成するには頂点(バッファ)を指定するの思うのですが、 その頂点は射影行列を施した後の(x座標、y座標、Z値)になり、 上のような3次元空間上の座標から直接メッシュが作り出せないものかと考えています。 ティーポットのようなメッシュをXファイルを使わずに作り出すにはどうしたらよろしいでしょうか? (↑曲面の描画 イコール メッシュの作成と考えての質問です、そもそもこの思考が間違っていますか?) だらだらと書き綴りましたがよろしくお願いします。

  • LaTeXマクロのemathを使ってもグラフを描画できません。

    LaTeXマクロのemathを使ってもグラフを描画できません。 Active Perlもちゃんとインストールしているのですが。 ソースは \documentclass{jarticle} \usepackage{emathP} \begin{document} \begin{zahyou}[ul=4mm](-2,8)(-2,2) \def\Fx{sin(X)+cos(X)} \YGurafu\Fx\xmin\xmax \end{zahyou} \end{document} です。 コマンドプロンプトで必ず、下記のような警告が出ます。 LaTeX Warning: do perl on input line 6 どうすれば、グラフを描画できるでしょうか。 OSはwindows 7です。環境変数のPathにもちゃんと;C:\w32tex\binを付け加えています。