13

画面の中央(または中央付近、ただし必ずしも中央ではない)を原点とする座標系に関数をプロットする必要があり、原点で交差するように軸を描画する必要があります。軸には、ラベルと目盛り、および矢印が必要です。

これを効率的に行う方法がわかりません。これまでのところ、コードではチックのオフセットを手動で設定し、オフセットを使用して手動で矢印を描画しています。軸ラベルにもオフセットを設定しました。これはすべて非常に壊れやすく、オフセットは端末の設定によって異なります。

誰かがサンプルコードやこれを正しい方法で行う方法の説明を手伝ってくれませんか?

4

3 に答える 3

16

さて、_zeroaxisを使用することは、目盛りとラベルを取得するための「正しい」方法です。_rangeを設定すると、0,0を中心にする対称性が得られます...そして、_rangeがわかったら、手動で矢印を描くことができます。

set xzeroaxis
set xtics axis
set xrange [-10:10]
set arrow 1 from -9,0 to -10,0
set arrow 2 from  9,0 to  10,0

set yzeroaxis
set ytics axis
set yrange [-1:1]
set arrow 3 from 0,-.9 to 0,-1
set arrow 4 from 0,.9  to 0,1

set border 0

plot sin(x)

ここに画像の説明を入力してください

于 2012-10-10T00:00:14.873 に答える
5

ハックアタック!

set term pngcairo truecolor size 300,300 font "Arial,12"
set out 'plot.png'

# x,y min/max and center
xmin = -10 
xc = 0 
xmax = 10
ymin = -2
yc = 0 
ymax = 2 
# default borders
tm = 1 
bm = 1 
rm = 4 
lm = 4 
# arrow scale factor to cover last tic 
af = 1.05
set arrow from xc,yc to xmin*af,yc filled size 0.6,30
set arrow from xc,yc to xmax*af,yc filled size 0.6,30
set arrow from xc,yc to xc,ymax*af filled size 0.6,30
set arrow from xc,yc to xc,ymin*af filled size 0.6,30

set multiplot layout 2,2 
## Plot 1, top left
set key top left
set xr [xmin:xc]
set yr [yc:ymax]
set tmargin tm
set bmargin 0
set rmargin 0
set lmargin lm
set border 9
unset ytics
set xtics nomirror
plot sin(x)
## Plot 2, top right
unset key
set xr [xc:xmax]
set lmargin 0
set rmargin rm
set border 3
set ytics nomirror
replot
## Plot 3, bottom left
set xr [xmin:xc]
set yr [ymin:yc]
set bmargin bm
set tmargin 0
set lmargin lm
set rmargin 0
set border 12
unset tics
replot
## Plot 4, bottom right
set xr [xc:xmax]
set lmargin 0
set rmargin rm
set border 6
set ytics nomirror
replot
unset multiplot

私はこの出力を取得します: ここに画像の説明を入力してください

そうは言っても、あなたはそのzeroaxis選択肢を検討するかもしれません。ここにデモンストレーションがあります。残念ながら、このオプションは軸をゼロに描画せず、その位置に線を配置するだけです。

replot私の方法が「効率的」であるとは言えませんが、ほとんどの作業はコマンドによって行われるため、プロットされる関数/データを変更する以外に、目的に合わせてこれを変更するのにそれほど労力はかかりません。gnuplotで軸の端に矢印を配置したり、軸がネイティブに描画される場所を変更したりするオプションがわかりません。

于 2012-10-05T16:57:09.147 に答える
1

ジムの答えに加えて、必要に応じてチックと軸を前面に出すことができます

# bring the grid over the plot
set grid front

# remove grid if not required
unset grid
于 2014-05-08T08:58:58.517 に答える