0

グラフをプロットしましたが、ytics を x の関数として表示したいと思います。例: x^2 をプロットし、 0,1,4,9... の ytics を表示したいと思います。これを自動的に行う方法はありますか、またはy軸のすべての目盛りを手動で設定する必要がありますか? ytics を定義するときに関数を設定しようとしましたが、gnuplot はそれを受け入れません。助けてくれてありがとう

4

3 に答える 3

2

forループを使用できます。もちろん、ここでは x 範囲を事前に知っておく必要があります。

f(x)=x**2
set ytics ( sprintf('%f',f(-10)) f(-10) )
set for [i=-9:10] ytics add ( sprintf('%f',f(i)) f(i) )
plot f(x)
于 2013-02-13T16:01:09.840 に答える
0

これが私の半自動の答えで、forループを使用してytics文字列を作成します。

#!/usr/bin/env gnuplot

set terminal pngcairo
set output 'test.png'

# x range
xmin = 0
xmax = 10
set xrange [xmin:xmax]

# define function of x to make plot, define tics
yfn(x) = x**2

# integer counting over tic positions
imin = int(xmin)
imax = int(xmax)

# build tics string
tix = '("'.sprintf('%d', yfn(imin)).'" '.sprintf('%d', yfn(imin))
do for [i=(imin+1):imax] {
 tix = tix.', "'.sprintf('%d', yfn(i)).'" '.sprintf('%d', yfn(i))
}
tix = tix.')'

set macros
# set ytics using macro expansion
set ytics @tix

plot yfn(x)

結果は次のとおりです。

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

于 2013-02-13T16:08:27.103 に答える
0

私はあなたの質問に正確に答えることはできませんが、ytis のラベルをカスタマイズすることを考えさせられます。例 :

f(x)=x**2
f1(x)=sqrt(abs(x))
set ytics format ""
set ytics scale 1
set t qt 0 enhanced font "Sans,9"
#set mytics 8

# ploting once the function for getting the GPVAL_ variable
plot f(x) t "f(x)=x**2"
# calculating function for the list of increment
linRg(start,end,increment)=system(sprintf("seq %g %g %g", start, increment, end))
# forcing the tics, otherwise, the tics of the first plot will still be marked
set ytics GPVAL_Y_MIN, (GPVAL_Y_MAX-GPVAL_Y_MIN)/8, GPVAL_Y_MAX
do for [i in linRg(GPVAL_Y_MIN, GPVAL_Y_MAX, (GPVAL_Y_MAX-GPVAL_Y_MIN)/8)] { pr i; set ytics add ('f(|'.gprintf("%.1s%c",f1(i)).'|)'.gprintf("=%.1s%c",i) i)}
replot

生成されます:ここに画像の説明を入力

于 2021-11-29T09:38:33.620 に答える