Gnuplot中脉冲和错误条之间不需要的间隙

Gnuplot中脉冲和错误条之间不需要的间隙,gnuplot,Gnuplot,我用脉冲来绘制过去12个月的每日最高温度。脉冲宽度为2像素,x轴的长度设置为2*365=730像素。左边距设置为60,右边距设置为789。我没有预料到脉冲之间会有任何间隙,但放大显示了一些不需要的间隙 有可能避免这种差距吗 reset session $Temperature <<EOD 01.05.2020 7 02.05.2020 8 03.05.2020 9 04.05.2020 13 05.05.2020 10 06.05.2020 11 07.05.2020 17 08.0

我用脉冲来绘制过去12个月的每日最高温度。脉冲宽度为2像素,x轴的长度设置为2*365=730像素。左边距设置为60,右边距设置为789。我没有预料到脉冲之间会有任何间隙,但放大显示了一些不需要的间隙

有可能避免这种差距吗

reset session
$Temperature <<EOD
01.05.2020 7
02.05.2020 8
03.05.2020 9
04.05.2020 13
05.05.2020 10
06.05.2020 11
07.05.2020 17
08.05.2020 8
09.05.2020 6
10.05.2020 10
11.05.2020 14
12.05.2020 16
13.05.2020 12
14.05.2020 7
15.05.2020 11
16.05.2020 18
17.05.2020 20
EOD

set xtics offset 4,0
set format x "%b" timedate
set xrange[time(0)-3600*24*365:time(0)]

set terminal wxt size 820,120
set lmargin at screen 60.0/820
set rmargin at screen 789.0/820
set border back

plot $Temperature u (timecolumn(1,"%d.%m.%Y")):2 w impulses lc "red" lw 2 title ""
重置会话

$Temperature问题是您使用的是
脉冲
,正如医生所说

显示从y=0到每个点的y值的垂直线

所以垂直线可能看起来彼此相邻,也可能与线宽和放大率无关。如果更改x范围,将看到每条线之间的间隙

解决方案是将
脉冲
替换为

在二维绘图中,
样式以给定的图形为中心绘制一个矩形 从x轴延伸的x坐标,即从y=0开始,而不是从图形开始 边界,到给定的y坐标。框的宽度可在中提供 一个附加的输入列或由
设置框宽
控制。否则每个 长方体延伸以接触相邻的长方体

编辑:
如果您需要不从0开始的框,您可以使用规格为
的烛台
使用x:ymin:ymin:ymax:ymax
并首先设置
设置框宽dx
,其中
dx
是一个框的x轴单位宽度。

我将使用样式
和boxyError
,选中帮助框XYERROR
。 顺便说一句,以下示例显示了“不需要的间隙”最有可能是什么: 检查
2020年5月5日
2020年5月9日
2020年5月10日
的最小和最大日期是否相同。 您对高度为零的箱子的可见性有何期望

代码:

### min. max. values with boxxyerror style
reset session

$AvTempAndDev <<EOD
01.05.2020  3   4
02.05.2020  5   3
03.05.2020  5   4
04.05.2020  8   5
05.05.2020  5   5
06.05.2020  6   5
07.05.2020  10  7
08.05.2020  5   3
09.05.2020  3   3
10.05.2020  5   5
11.05.2020  8   6
12.05.2020  10  6
13.05.2020  8   2
14.05.2020  4   3
15.05.2020  7   4
16.05.2020  11  7
17.05.2020  12  8
EOD

set format x "%b %1d" timedate
SecPerHalfDay = 3600*12
set style fill solid 1.0 noborder
set key noautotitle

plot $AvTempAndDev using (timecolumn(1,"%d.%m.%Y")):(($3+$2)/2):(SecPerHalfDay):(($3-$2)/2) w boxxy lc "red"
### end of code
结果:

### min. max. values with boxxyerror style
reset session

$AvTempAndDev <<EOD
01.05.2020  3   4
02.05.2020  5   3
03.05.2020  5   4
04.05.2020  8   5
05.05.2020  5   5
06.05.2020  6   5
07.05.2020  10  7
08.05.2020  5   3
09.05.2020  3   3
10.05.2020  5   5
11.05.2020  8   6
12.05.2020  10  6
13.05.2020  8   2
14.05.2020  4   3
15.05.2020  7   4
16.05.2020  11  7
17.05.2020  12  8
EOD

set format x "%b %1d" timedate
SecPerHalfDay = 3600*12
set style fill solid 1.0 noborder
set key noautotitle

plot $AvTempAndDev using (timecolumn(1,"%d.%m.%Y")):(($3+$2)/2):(SecPerHalfDay):(($3-$2)/2) w boxxy lc "red"
### end of code

你说的“差距”是什么意思?你能出示你的图表并指出你的“差距”吗?也许你不想用脉冲
绘制
,但也许用方框
绘制
?@Theozh,我不认为方框可以解决我添加到我的任务中的其他问题(最低和最高温度)。你的屏幕截图看起来像是放大到像素级。我不确定您是否会因为渲染而获得锯齿效果。您在哪里发现
lw2
的宽度为2像素?我还没有通过
help linewidth
@Theozh立即找到这个,我必须承认这是一个假设。如果有365条,且x轴长度为730像素,那么这些条的宽度必须为2像素?但从我的图中,我看到lw 2必须大于2像素。正如我上面提到的,正如@Joce在他的回答中所解释的,基本上你想要的是带有方框的打印样式
,而不是带有脉冲的
。但即使这样,也可能会产生这样的效果,即并非所有方框在像素级上都显示相同的宽度。我想这是一个渲染问题,因为你没有分数像素。通过一些额外的努力,您可以“调优”图形,使x轴长度是boxwidth的整数倍。但请记住闰年是366天。如果我把这些冲动缩小,所有冲动之间会有一个差距,但其中一些差距会比其他差距更大。我不认为盒子可以解决我添加到我的问题中的其他问题(最低和最高温度)。盒子可以解决你第一次发布的问题。errorbars和Pulse都不是用来获得连续图的,它们是由宽度不根据x轴点之间的距离设置的线组成的。块$AVTEMPANDEV ALLRADY包含平均值和与平均值的偏差。如果我将x轴延长到12个月,wxt终端将给出正确的绘图,但使用
设置终端png大小920120
将显示部分相互重叠的框。如果我减小长方体的宽度,则长方体将以不同的宽度和间距打印。
set boxwidth 3600*24
plot $AvTempAndDev using (timecolumn(1,"%d.%m.%Y")):3:3:2:2 w candlesticks lc "red"