【问题标题】:gnuplot cluster the x range for stacked histogramsgnuplot 对堆叠直方图的 x 范围进行聚类
【发布时间】:2025-12-02 08:25:01
【问题描述】:

我有以下代码生成堆叠直方图:

#!/usr/bin/gnuplot
set term postscript eps enhanced color
#set output 'stacked-hist.eps'
set output ARG1.'.eps'

set title ARG1
set key top left outside horizontal autotitle columnhead

#set xtics rotate by 90 offset 0,-5 out nomirror
set autoscale x
set ytics out nomirror

set style fill solid border -1
set boxwidth 0.5 relative
set style data histograms
set style histogram rowstacked
set xlabel "Degree of node"

plot ARG1 using 2, '' using 3:xtic(1)

结果如下:(因为 xrange 是 0:5000)

我想要的是以下(在输入数据中,我没有每个 X 的很多数据点,所以我想看到如下所示的直方图集群:

有没有办法在 gnuplot 中做到这一点? 这种堆叠直方图有正式名称吗? (分组堆叠直方图)

【问题讨论】:

  • 您能提供更多信息吗?目前尚不清楚如何解释您的示例图,因此不清楚如何重现它。 200
  • 200 到 1000 之间可能有一些数据点,但我想忽略它们。在 gnuplot 中可以吗?

标签: gnuplot


【解决方案1】:

从您对我的评论的回答看来,您似乎只想跳过低于某个数字的值。如果这就是你所需要的,那很简单。首先,让我们制作一个随机数表并绘制它的直方图(我会跳过样式设置,但我使用的是你的):

set table set out 'rand.dat' plot rand(0) unset table plot 'rand.dat'

这给了我们这个:

如果我们不想为低于某个值(例如 0.4)的值绘制直方图框,我们可以这样做:

c = 0.4 plot 'rand.dat' using ($2 > c ? $2 : NaN)

这让我们明白了:

如果我仍然不明白你想做什么,对不起。欢迎赐教,我会再试一次。

【讨论】: