GNUplot自动缩放设置X范围等于Y范围
我使用GNUplot从数据文件中绘制轨道。我想使用GNUplot自动缩放设置X范围等于Y范围,plot,gnuplot,Plot,Gnuplot,我使用GNUplot从数据文件中绘制轨道。我想使用自动缩放xy,这样就不需要根据数据编辑GNUplot脚本。但是,当我打印时,autoscale不会将xrange设置为与yrange相同。这使得轨道看起来“被挤压” 我试过使用设置大小平方和设置大小比率-1 . 但这不起作用 是否有强制自动缩放使x和y范围相等的方法 谢谢 否,没有将x和y范围自动缩放到相同值的选项。这里有一个解决方案,你可以通过一些技巧来做到这一点 如果您想让gnuplot将范围扩展到下一个tic,可以按如下操作: 必须首先使
自动缩放xy
,这样就不需要根据数据编辑GNUplot脚本。但是,当我打印时,autoscale
不会将xrange
设置为与yrange
相同。这使得轨道看起来“被挤压”
我试过使用设置大小平方
和设置大小比率-1
.
但这不起作用
是否有强制自动缩放
使x和y范围相等的方法
谢谢 否,没有将x和y范围自动缩放到相同值的选项。这里有一个解决方案,你可以通过一些技巧来做到这一点 如果您想让gnuplot将范围扩展到下一个tic,可以按如下操作: 必须首先使用
未知
终端打印一次。这将在gnuplot变量GPVAL\u x\u MIN
、GPVAL\u x\u MAX
、GPVAL\u y\u MIN
和GPVAL\u y\u MAX
中保存x和y范围。然后设置范围并重新打印:
set terminal push # save current terminal
set terminal unknown
plot 'datafile'
set terminal pop # restore previous terminal
min = (GPVAL_Y_MIN < GPVAL_X_MIN ? GPVAL_Y_MIN : GPVAL_X_MIN)
max = (GPVAL_Y_MAX > GPVAL_X_MAX ? GPVAL_Y_MAX : GPVAL_X_MAX)
set xrange[min:max]
set yrange[min:max]
set size ratio -1
replot
另一个选项是使用stats
计算最大和最小x值和y值,并相应地设置范围:
stats 'datafile' using 1:2 nooutput
min = (STATS_min_y < STATS_min_x ? STATS_min_y : STATS_min_x)
min = (STATS_max_y > STATS_max_x ? STATS_max_y : STATS_max_x)
sc = 1.05
set xrange[sc*min:sc*max]
set yrange[sc*min:sc*max]
set size ratio -1
plot 'datafile'
stats“datafile”使用1:2 nooutput
最小=(统计最小值y<统计最小值x?统计最小值y:统计最小值x)
最小=(统计数据>统计数据?统计数据?统计数据:统计数据)
sc=1.05
设置X范围[sc*最小值:sc*最大值]
设置Y范围[sc*最小值:sc*最大值]
设置大小比率-1
打印“数据文件”
感谢您提供的解决方案。然而,这种方法相当令人沮丧,因为我正在使用multiplot
从数据文件的不同列绘制4个图形。对每个数据集都这样做并不理想,但可行。是的,的确如此。我更新了我的答案,向您展示了如何将所有这些内容放在一个字符串中,并使用eval
使其可重用。
stats 'datafile' using 1:2 nooutput
min = (STATS_min_y < STATS_min_x ? STATS_min_y : STATS_min_x)
min = (STATS_max_y > STATS_max_x ? STATS_max_y : STATS_max_x)
sc = 1.05
set xrange[sc*min:sc*max]
set yrange[sc*min:sc*max]
set size ratio -1
plot 'datafile'