2013-02-13 57 views
0

我绘制了一个图,我想将ytics显示为x的函数。例如: 我绘制x^2,我想为0,1,4,9 ...显示ytics。有没有办法自动做到这一点,或者我必须手动设置y轴的每一个tic?我在定义ytics时试图设置一个函数,但gnuplot不接受它。 感谢您的任何帮助gnuplot中ytics的增量

回答

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) 
+0

你刚刚打败了我!更紧凑的方式也是如此。我不知道'add'字符串命令。 – andyras 2013-02-13 16:11:44

+0

@andyras - 与[今天早上我回答的另一个]非常相似(http://stackoverflow.com/a/14847447/748858)。 – mgilson 2013-02-13 19:14:03

+0

非常感谢!这正是我正在寻找的!谢谢!!! – Paoligno90 2013-02-14 00:01:06

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) 

这是结果:

enter image description here