【问题标题】:Reducing number of datapoints when plotting in loglog scale in Gnuplot在 Gnuplot 中以 loglog 比例绘制时减少数据点的数量
【发布时间】:2021-07-23 12:58:23
【问题描述】:

我有一个大型数据集,需要在 Gnuplot 中以 loglog 比例绘制,如下所示:

set log xy
plot 'A_1D_l0.25_L1024_r0.dat' u 1:($2-512)

LogLogPlot of my datapoints

Text file with the datapoints

x 轴上的数据点等距分布,但由于对数刻度,它们在图的右侧变得非常密集,因此输出文件(我最终以 .tex 格式导出)变得非常大。 在线性比例中,我会简单地使用选项every 来减少绘制的点数。 loglogscale 是否有类似的选项,使得绘制的点看起来等距?

我知道几年前提出了类似的question,但在我看来,解决方案并不令人满意:绘制的点在 x 轴上的间距不相等。我认为这是一个非常简单的问题,值得一个更清晰的解决方案。

【问题讨论】:

    标签: plot graph gnuplot datapoint


    【解决方案1】:

    据我了解,您不想绘制实际数据点;你只想通过它们绘制一条线。但是你想保持点的外观而不是线的外观。对吗?

      set log xy
      plot 'A_1D_l0.25_L1024_r0.dat' u 1:($2-512) with lines dashtype '.' lw 2
    

    修改后的答案

    如果在数据集中显示异常值/错误很重要,那么您不得使用every 或任何其他简单地丢弃或跳过大部分数据点的技术。在这种情况下,我更喜欢您在原始问题中显示的情节with points,可能会修改为将每个点表示为一个点而不是一个十字。我将通过修改 500000 点数据集中的一个点来模拟这一点(下图第一张)。但我也建议,如果您绘制with lines(下面的第二个图),异常值的存在会更加明显。

    显示错误界限是嘈杂数据的另一种选择,但选项取决于您在数据集中必须处理的内容。如果您想继续这样做,请提出一个单独的问题。

    【讨论】:

    • 谢谢,这听起来是一个非常聪明的解决方案。但是,我忘了提到这些数据是指科学测量:我可以在应该进入科学文章的情节上使用这样的技巧吗?此外,如果我的数据带有错误栏,我应该如何处理?
    • 我注意到您最初的问题是询问如何丢弃大部分数据点。这将比画一条穿过数据集中每个点的虚线更糟糕的“遗漏之罪”。修改答案以显示向数据添加单个异常点的高度可见效果(但前提是您保留所有点!)
    • 再次感谢,这仍然是一个很好的答案,但我想到的场景当然不是我愿意省略一些“异常值”的场景。例如,如果我的数据来自数值模拟,那么总的来说,我有很多点(同样重要且广泛同质),我需要省略其中的一些以使它们呈现清晰。
    【解决方案2】:

    如果你真的想减少要绘制的数据数量,你可以考虑下面的脚本。

    s = 0.1           ### sampling interval in log scale
                      ###  (try 0.05 for more detail)
    
    c = log10(0.01)   ### a parameter used in sampler(x) 
                      ### which should be initialized by 
                      ### smaller value than any x in log scale
    
    sampler(x) = (x>0 && log10(x)>=c) ? (c=ceil(log10(x)/s+0.5)*s, x) : NaN
    
    set log xy
    set grid xtics
    plot 'A_1D_l0.25_L1024_r0.dat' using (sampler($1)):($2-512) with points pt 7 lt 1 notitle , \
         'A_1D_l0.25_L1024_r0.dat' using 1:($2-512) with lines lt 1 notitle
    

    此脚本以对数刻度的 x 轴上大约 0.1 的增量对数据进行采样。它利用了在使用中x值被评估为NaN的点不被绘制的属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-15
      • 2013-12-29
      • 2018-12-03
      • 2020-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多