2

これから始めます:

#!/usr/bin/env python
from numpy import *
import Gnuplot as gp
import Gnuplot.funcutils

x = (1,2,3)
y=(2,4,5)
g = gp.Gnuplot()
d = gp.Data(x,y,with_="lines",title='Graph')
g.plot(d)
g('set size 200,100')
g.output('filename.svg')

ポイントが線に接続され、次元が固定され、透明なグラフを取得したいと思います。提案?

4

2 に答える 2

1

まず、 を取り外しますg('set size 200,100')。このコマンドは基本的に、gnuplot に x 方向に通常の 200 倍、y 方向に 100 倍のプロットを作成するように指示します。隅にあるプロットのごく一部 (おそらく何も表示されないでしょう)。

次に、純粋な gnuplot で目的を達成する方法を次に示します (実際に要求を適切に解釈しているかどうかをテストしてください)。

set terminal svg size 200,100
set output "filename.svg"
plot '-' w linespoints linestyle 1 pointtype 7 #just picked some linestyles and pointtypes... 
   1 2
   2 4
   3 5
   e

これを gnuplot-py に入れるには、g('...') ですべてをまとめることができます。これはかなり醜いアプローチですが、うまくいくはずです。gnuplot-py が何を有効なプロット タイプとして認識し、何を認識しないのかはわかりません...そのためには、おそらくソースを掘り下げる必要があるでしょう。

「インラインデータ」も使用しましたが、ポイントを一時ファイルに簡単に書き込むことができます (tempfileモジュールを使用して、代わりにそれをプロットする方が簡単な場合)。

うまくいくようですd = gp.Data(x,y,with_="linespoints",title="data")が、約束はしません...

私の推測では、それもうまくいくg.output('filename.svg',terminal='svg',size="200,100")かもしれませんが、gnuplot-py は、私が思うように動作しないように見えるので、あまり好きではありません。それがうまくいかない場合は、プロットする前に ag('...') に頼る必要があります。

要約すると、これを試してみるとどうなりますか?

#!/usr/bin/env python
from numpy import *
import Gnuplot as gp
import Gnuplot.funcutils

x = (1,2,3)
y=(2,4,5)
g = gp.Gnuplot()
d = gp.Data(x,y,with_="linespoints",title='Graph')
g("set terminal svg size 200,100")
g("set output 'filename.svg'")
g.plot(d)
于 2012-05-14T19:17:06.300 に答える
0

私はgnuplotをPythonにインポートしたことはありませんが、プロットに追加の行が必要な場合は、gnuplotシェルで次のようにします:

    set arrow from 1,2 to 2,4 nohead lw 2
    set arrow from 2,4 to 3,5 nohead lw 2

それらを再度削除するには、未設定の矢印を使用します。行 g('set size 200,100') は、これを行うために gnuplot に行を渡すことができることを示唆しています。

コードを実行すると、どのような結果が得られますか? データをプロットして線でつないでいませんか?次元が固定され、透明であるという意味がわかりません。

于 2012-05-14T18:32:48.513 に答える