【问题标题】:Gnuplot histogram x logscaleGnuplot 直方图 x 对数刻度
【发布时间】:2014-06-13 14:34:44
【问题描述】:

我在 bash 脚本中使用 gnuplot 来绘制一些东西。 对于这个特殊的图形,我需要以矩阵大小作为 x 轴来打印矩阵的数量(y 轴)。 由于分布可能非常稀疏,我想对 x 和 y 使用对数刻度。它适用于 y,但 gnuplot 告诉我,当我使用直方图样式时,我无法为 x 轴设置对数刻度。

有什么想法可以调试吗?或者如何使用类似的方式呈现结果?

set style data histogram
set style histogram cluster gap 1
set style fill solid border -1
set logscale xy
plot '$res/histo-$ld-$lr-$e-$r' using 2:xtic(1) title 'Run'

错误是:

line 0: Log scale on X is incompatible with histogram plots

提前致谢。

编辑:顺便说一句,我使用的是 gnuplot 4.4 patchlevel 4 并且刚刚更新到最新版本(即 4.6 patchlevel 5)

【问题讨论】:

  • 请提供一些数据样本。 Gnuplot 直方图的工作方式与您想象的有些不同。 x 轴不是数字。在您的情况下,第一行第二列中的值位于 x 值 0 处,y 值取自第二列,手动标签取自第一列第一行。第二行的值位于 x=1 等处。您可以尝试使用 boxes 绘图样式,它与“常规”x 轴一起使用,并且可能支持 x 中的对数刻度。
  • 这是一个数据样本:X Y 1 1000 2 300 5 150 20 10 135 3 你的意思是,默认情况下,直方图 x 轴不是数字?这可以解释为什么我不能有对数刻度。

标签: gnuplot histogram scaling


【解决方案1】:

Gnuplot 直方图的工作方式与您想象的有些不同。 x 轴不是数字。在您的情况下,第一行第二列中的值位于 x 值 0 处,y 值取自第二列,手动标签取自第一列第一行。第二行的值放在 x=1 等处。

您可以尝试使用方框绘图样式,它与“常规”x 轴一起使用并支持 x 中的对数刻度:

set logscale xy
set offset 0,0,1,1
set boxwidth 0.9 relative
set style fill solid noborder
plot 'data.dat' with boxes

带有数据文件data.dat

1 1000
2 300 
5 150 
20 10 
135 3

这给出了结果(4.6.5):

为了获得固定的框宽和可变的框距,您可以使用第三列将框宽指定为 x 值的百分比:

set logscale xy
set offset 0,0,1,1
set style fill solid noborder
plot 'data.dat' using 1:2:($1*0.5) with boxes

将实际值放在 x 轴上的工作方式如下:

set logscale xy
set offset 0,0,1,1
set style fill solid noborder
plot 'data.dat' using 1:2:($1*0.5):xtic(1) with boxes

【讨论】:

  • 谢谢,经过一些工作,我最终得到了几乎相同的东西。但是我发现不同的宽度使图形变得丑陋。有什么方法可以保持对数刻度和固定宽度?提前致谢!
  • 好吧,我想我仍然有问题......使用 1:2:3 和框绘制“data.dat”效果很好(如上图。我有一个 awk 脚本来计算尺寸)。但是,我希望 x 轴标签是 x 值 (1 2 5 20 135)。 plot 'data.dat' using 2:xtic(1) with boxes 可以做到这一点,但大小不同。并使用 2:xtic(1):3 绘制 'data.dat' 做了一些非常奇怪的事情(盒子的大小列在 x 轴上,值 1 在 y 轴上!)
  • xtic(1) 部分必须是using 语句中的最后一个条目,例如using 1:2:3:xtic(1),查看我的编辑。
  • 我似乎没有完全理解using 声明......无论如何,非常感谢,这终于按我的预期工作了!
猜你喜欢
  • 2011-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多