Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
gnuplot:强制y轴tics处于y轴tics位置_Gnuplot - Fatal编程技术网

gnuplot:强制y轴tics处于y轴tics位置

gnuplot:强制y轴tics处于y轴tics位置,gnuplot,Gnuplot,灵感来源于另一个答案中的set链接,我想绘制一个图表并显示不同的比例轴 set grid mytics set xrange[1:5] set yrange[0:3] set y2range[0:30] set xlabel "a" set ylabel "b" set ytics set y2label "c" set mytics 2 ca = 0.05 cb = 0.5 f(x) = sin(x*pi/180)*cb *1000 i(x) = asin(x/1000 /

灵感来源于另一个答案中的set链接,我想绘制一个图表并显示不同的比例轴

set grid mytics
set xrange[1:5]  
set yrange[0:3]
set y2range[0:30]
set xlabel "a"   
set ylabel "b"  
set ytics 
set y2label "c"
set mytics 2

ca = 0.05
cb = 0.5

f(x) = sin(x*pi/180)*cb *1000
i(x) = asin(x/1000 / cb )/pi*180
set link y2 via f(y) inverse i(y)

pl asin(ca /x)/pi*180 title "a"

它按预期绘制了绘图和轴,但我想要的是y2轴上的tic在ytics上是精确的(尽管它们是非整数)

没有选项将例如
6
等分布的tic放置在轴上(就像使用
设置my2tics 7
一样)。但是您可以手动添加tic,因为您知道功能范围

首先,您需要使用清除所有自动
y2tics

set y2tics (f(0))
然后可以在循环中设置所有次要和主要tics:

do for [i=0:6] {
    set y2tics add (f(i/2.0))
    set y2tics add ('' f(i/2.0 + 0.25) 1)
}
请注意,使用浮点增量循环不起作用

因此,您的完整脚本如下所示:

reset
set grid mytics
set xrange[1:5]  
set yrange[0:3]
set y2range[0:30]
set xlabel "a"   
set ylabel "b"  
set ytics nomirror
set y2label "c"
set mytics 2

ca = 0.05
cb = 0.5

f(x) = sin(x*pi/180)*cb *1000
i(x) = asin(x/1000 / cb )/pi*180
set link y2 via f(y) inverse i(y)

set format y2 '%.2f'
set y2tics (f(0)) # clear all automatic y2tics
do for [i=0:6] {
    set y2tics add (f(i/2.0))
    set y2tics add ('' f(i/2.0 + 0.25) 1)
}

pl asin(ca /x)/pi*180 title "a"
结果是:

有一种方法可以设置
y2tics
,只要知道主要tics的数量,就可以独立于
yrange
。首先使用
未知
终端进行绘图,然后可以访问
yrange
值作为变量
GPVAL\u Y\u MIN
GPVAL\u Y\u MAX
。不幸的是,无法访问轴的TIC数:

...
set link y2 via f(y) inverse i(y)

set terminal push # save current terminal
set terminal unknown
pl asin(ca /x)/pi*180 title "a"

num_tics = 7
set format y2 '%.2f'
set y2tics (f(GPVAL_Y_MIN)) # clear all automatic y2tics
Y0 = GPVAL_Y_MIN
DY = (GPVAL_Y_MAX - GPVAL_Y_MIN)/(num_tics-1)
do for [i=0:(num_tics-1)] {
    set y2tics add (f(Y0+i*DY))
    set y2tics add ('' f(Y0+(i+0.5)*DY) 1)
}

set terminal pop # restore terminal
replot

没有选项将例如
6
等分布的TIC放置在轴上(就像使用
设置my2tics 7
一样)。但是您可以手动添加tic,因为您知道功能范围

首先,您需要使用清除所有自动
y2tics

set y2tics (f(0))
然后可以在循环中设置所有次要和主要tics:

do for [i=0:6] {
    set y2tics add (f(i/2.0))
    set y2tics add ('' f(i/2.0 + 0.25) 1)
}
请注意,使用浮点增量循环不起作用

因此,您的完整脚本如下所示:

reset
set grid mytics
set xrange[1:5]  
set yrange[0:3]
set y2range[0:30]
set xlabel "a"   
set ylabel "b"  
set ytics nomirror
set y2label "c"
set mytics 2

ca = 0.05
cb = 0.5

f(x) = sin(x*pi/180)*cb *1000
i(x) = asin(x/1000 / cb )/pi*180
set link y2 via f(y) inverse i(y)

set format y2 '%.2f'
set y2tics (f(0)) # clear all automatic y2tics
do for [i=0:6] {
    set y2tics add (f(i/2.0))
    set y2tics add ('' f(i/2.0 + 0.25) 1)
}

pl asin(ca /x)/pi*180 title "a"
结果是:

有一种方法可以设置
y2tics
,只要知道主要tics的数量,就可以独立于
yrange
。首先使用
未知
终端进行绘图,然后可以访问
yrange
值作为变量
GPVAL\u Y\u MIN
GPVAL\u Y\u MAX
。不幸的是,无法访问轴的TIC数:

...
set link y2 via f(y) inverse i(y)

set terminal push # save current terminal
set terminal unknown
pl asin(ca /x)/pi*180 title "a"

num_tics = 7
set format y2 '%.2f'
set y2tics (f(GPVAL_Y_MIN)) # clear all automatic y2tics
Y0 = GPVAL_Y_MIN
DY = (GPVAL_Y_MAX - GPVAL_Y_MIN)/(num_tics-1)
do for [i=0:(num_tics-1)] {
    set y2tics add (f(Y0+i*DY))
    set y2tics add ('' f(Y0+(i+0.5)*DY) 1)
}

set terminal pop # restore terminal
replot

似乎默认情况下,integerxtic映射到x2tics

以下代码段是从中修改的

但是,不映射十进制值,正如放大时所看到的:

似乎整数XTIC默认映射到x2tics

以下代码段是从中修改的

但是,不映射十进制值,正如放大时所看到的:

再次感谢您,我希望有一个独立于范围的更好的解决方案,但它会起作用thanks@vlad_tepesch您可以使其独立于实际范围,但必须知道tic的数量。请参阅编辑后的答案。再次感谢,我希望有一个独立于范围的更好的解决方案,但它会起作用thanks@vlad_tepesch您可以使其独立于实际范围,但必须知道tic的数量。请参见编辑后的答案。