gnuplot直方图:负值向下,而不是向上

gnuplot直方图:负值向下,而不是向上,gnuplot,histogram,Gnuplot,Histogram,我尝试用gnuplot生成一个直方图。我有正数和负数。正值位于图表顶部,负值位于图表底部。。 我想把底座换成上升和下降 例如,从0到-100 也许,这样做不是一种好的图形类型 我试过这个: gnuplot-e“设置终端png大小20000、1500;设置Y范围[-100:];设置标题“VU米0”;设置样式数据直方图;设置样式直方图聚集间距1;设置样式填充实心1号顺序;使用2:xticlabels(1)”打印“testVUmeter0.tsv”>out.png 感谢您,您可以在每个点计算一个新的y

我尝试用gnuplot生成一个直方图。我有正数和负数。正值位于图表顶部,负值位于图表底部。。 我想把底座换成上升和下降 例如,从0到-100

也许,这样做不是一种好的图形类型

我试过这个:

gnuplot-e“设置终端png大小20000、1500;设置Y范围[-100:];设置标题“VU米0”;设置样式数据直方图;设置样式直方图聚集间距1;设置样式填充实心1号顺序;使用2:xticlabels(1)”打印“testVUmeter0.tsv”>out.png


感谢您,您可以在每个点计算一个新的y值,同时考虑一些需要的偏移量。例如,设置
bot=-20
以给出底部y值-20,您可以参考
($2-bot)
将-5转换为0以上的
-5-(-20)=
15`

set terminal png size 400,300
set output "out.png"
set style data histogram
set style histogram clustered gap 1
set style fill solid 1 noborder
bot=-20
set yrange [0:*]
set ytics  ("-10" -10-bot, "0" 0-bot, "10" 10-bot, "20" 20-bot, "30" 30-bot)
plot "data" using (($2)-bot):xticlabels(1) notitle,  \
     ""  using 0:($2+3-bot):(sprintf("%d",$2)) with labels notitle
数据为

1 33
2 44
3 22
4 -12
给出了绘图:


您可以在每个点计算一个新的y值,同时考虑一些需要的偏移量。例如,设置
bot=-20
以给出底部y值-20,您可以参考
($2-bot)
将-5转换为0以上的
-5-(-20)=
15`

set terminal png size 400,300
set output "out.png"
set style data histogram
set style histogram clustered gap 1
set style fill solid 1 noborder
bot=-20
set yrange [0:*]
set ytics  ("-10" -10-bot, "0" 0-bot, "10" 10-bot, "20" 20-bot, "30" 30-bot)
plot "data" using (($2)-bot):xticlabels(1) notitle,  \
     ""  using 0:($2+3-bot):(sprintf("%d",$2)) with labels notitle
数据为

1 33
2 44
3 22
4 -12
给出了绘图:


据我所知,绘制样式
柱状图
带框
始终从y=0开始。 假设我正确理解了您的问题,您希望将此零级别转换为-100。 只要您不需要高级直方图样式,而只需要简单的框,一种可能的解决方案就是使用带有boxyError的打印样式
。与@meuh的解决方案相比,在这里,gnuplot自动关注y-tics

代码:

### shift zero for boxes
reset session

$Data <<EOD
A   -20
B  -140
C   100
D  -340
E  +250 
F     0
EOD

myOffset = -100
myWidth = 0.8
set style fill solid 1.0

set arrow 1 from graph 0, first myOffset to graph 1, first myOffset nohead ls -1
set style textbox opaque

plot $Data u 0:2:($0-myWidth/2.):($0+myWidth/2.):(myOffset):2:xtic(1) w boxxyerror notitle, \
     '' u 0:2:2 w labels boxed notitle 
### end of code
###为方框移位零
重置会话

$Data据我所知,绘制样式
直方图
带框
始终从y=0开始。
假设我正确理解了您的问题,您希望将此零级别转换为-100。
只要您不需要高级直方图样式,而只需要简单的框,一种可能的解决方案就是使用带有boxyError的打印样式
。与@meuh的解决方案相比,在这里,gnuplot自动关注y-tics

代码:

### shift zero for boxes
reset session

$Data <<EOD
A   -20
B  -140
C   100
D  -340
E  +250 
F     0
EOD

myOffset = -100
myWidth = 0.8
set style fill solid 1.0

set arrow 1 from graph 0, first myOffset to graph 1, first myOffset nohead ls -1
set style textbox opaque

plot $Data u 0:2:($0-myWidth/2.):($0+myWidth/2.):(myOffset):2:xtic(1) w boxxyerror notitle, \
     '' u 0:2:2 w labels boxed notitle 
### end of code
###为方框移位零
重置会话

我不太明白。如果有两个y值,比如5和-5,第一个直方图将从y=0变为y=5,第二个直方图将从y=0变为y=-5。你想看什么?@meuh举个例子,我有两个值3和-2。例如,我希望看到从-5开始的2个值。目前,基数是0。我不太明白。如果有两个y值,比如5和-5,第一个直方图将从y=0变为y=5,第二个直方图将从y=0变为y=-5。你想看什么?@meuh举个例子,我有两个值3和-2。例如,我希望看到从-5开始的2个值。目前,基数为0。