Gnuplot如何降低x轴的抽动数量

时间:2014-04-18 10:27:51

标签: gnuplot axis

这个数字有太多的xtics和ytics。我可以有一半吗?

我知道我可以用类似的方式手动设置抽动:

set xtics (1,2,4,8,16,32,64,128,256,512,1024)

但我觉得这不是一般解决方案。您无法为所有数字手动设置抽搐。我有很多这些,并且使用Java自动生成gnuplot代码。

以下是该图的代码:https://dl.dropboxusercontent.com/u/45318932/gnuplot2.plt

你能帮助降低x和y抽搐的数量吗?

enter image description here

4 个答案:

答案 0 :(得分:11)

gnuplot中没有选项可以在轴上显式设置所需的抽搐数量,并让gnuplot决定放置它们的位置。 (我真的希望有。)

您有一个选择是使用stats命令(在gnuplot 4.6+中)查找数据范围:

ntics = 4

stats 'data.dat' using 1 name 'x' nooutput
stats 'data.dat' using 2 name 'y' nooutput
stats 'data.dat' using 3 name 'z' nooutput

set xtics x_max/ntics
set ytics y_max/ntics
set ztics z_max/ntics

您可能需要调整是否要将抽搐设置为整数值,但这是一般的想法。

答案 1 :(得分:8)

根据您的具体操作,有多种方法可以设置抽动数量。对于长度为2的固定段,从零开始到32:

set xrange [0:32]
set xtics 0,2,32
plot sin(x)

enter image description here

如果您想要指数增量,请尝试以下

set xrange [0:32]
set for [i=0:5] xtics (0,2**i)
plot sin(x)

enter image description here

或者您可以使用对数刻度(在本例中为2):

set xrange [1:32]
set logscale x 2
plot sin(x)

enter image description here

答案 2 :(得分:0)

我有一个类似的问题,我希望在数据发生变化的情况下更加一般地处理,同时仍然使用有些圆形的数字。因此我做了一个帮手功能:

endsinone(n) = strstrt(gprintf("%g", incrguess), "1")
getincr(range, maxincr, guess) = range/guess < maxincr ? guess : \
    (endsinone(guess) ? getincr(range, maxincr, 5*guess) : getincr(range, maxincr, 2*guess))

然后我只需要传递轴的范围,我想要的最大增量,以及关于我期望最小可能增量的极低限度猜测。为了保持圆形外观数字,我的函数假设猜测可以1eN5eN形式表示某些值N。即(50是好,所以是0.0000001,5050不是)。使用此功能,您只需执行类似

的操作
set xtics getincr(STATS_max, 6, 1e-9)

将返回少于6个抽搐的incr,并且应该有几个假定STATS_MAX&gt; 1E-9。

答案 3 :(得分:0)

您可以使用例如

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<div class="info_container">
  <div class="lectures_container"></div>
  <a href="#" class="btn btn-add">
    <span class="fa fa-plus"></span> Add an input
  </a>
</div>
<div class="info_container">
  <div class="lectures_container"></div>
  <a href="#" class="btn btn-add">
    <span class="fa fa-plus"></span> Add an input
  </a>
</div>

,它将在x轴上每10个显示抽动。