Gnuplot直方图x logscale

时间:2014-06-13 14:34:44

标签: gnuplot histogram scaling

我在bash脚本中使用gnuplot来绘制几个东西。 对于这个特殊的图形,我需要打印矩阵的数量(y轴),矩阵大小为x轴。 由于分布可能非常稀疏,我想对x和y使用logscale。它适用于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补丁级别5)

1 个答案:

答案 0 :(得分:3)

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):

enter image description here

为了获得固定的盒宽和不同的盒子距离,您可以使用第三列将盒子宽度指定为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

enter image description here

将实际值放在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

enter image description here