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