Gnuplot中脉冲和错误条之间不需要的间隙
我用脉冲来绘制过去12个月的每日最高温度。脉冲宽度为2像素,x轴的长度设置为2*365=730像素。左边距设置为60,右边距设置为789。我没有预料到脉冲之间会有任何间隙,但放大显示了一些不需要的间隙 有可能避免这种差距吗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
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"