0

所以我使用 gnuplot 来绘制一些随时间变化的数据,并且我希望底轴以小时为单位。x 轴上应该只有 4-5 小时标记,但由于数据如此分散,gnuplot 似乎想要复制每个点(可能需要一些分钟数据来填补空白)。

所以它在 x 轴上看起来像这样:

小时:0 0 1 1 2 2 3 3 4 4

但应该是这样的:

小时:0 1 2 3 4

有没有可以翻转的设置来告诉它不重复 x 轴值?

这是 .plt 文件的内容(缩短):

clear
print ""
set terminal pngcairo transparent enhanced font "arial,25"             -    -    -   fontscale 1.0 size 1920, 1080
set key outside bottom center box title "spiders in my house over time" enhanced
set key maxrows 4
set key font ",25" spacing 1 samplen 2.9 width 2 height 1
set xlabel "Time (hours)" offset -35 font ",30"
set ylabel "% Average number of spiders (100 means house is filled)" font ",30"

set output "spiders.png"
set title "Average spiders in my house" font ",35"
set datafile separator ","
set xdata time
set timefmt "%Y-%m-%d %H:%M:%S"
set xtics format "%H" font ",25"
set ytics font ",25"

set style line 1 lt 1 lc rgb "red" lw 4
show style line
starting_time = 8631

plot "spider_data.csv" using (timecolumn(1)-starting_time):2 every ::3 ls 1 t "SPIDERS AHHH" with lines

现在,如果我更改set xtics format "%H" font ",25"为 `set xtics format "%H:%M" font ",25"' 然后它会停止复制,但这并不能真正解决只需要小时刻度的问题。

.csv 文件具有time, val格式。

4

3 回答 3

2

您必须xtics正确设置。在默认设置下,当总时间跨度小于例如四个小时时,抽动分辨率小于一小时,但由于您的设置无法显示set xtics format "%H"

增量以xtics秒为单位设置,您为了仅在全时抽动,请使用set xtics 60*60.

这在以下示例中显示:

set timefmt "%Y-%m-%d %H:%M:%S"
set xdata time
set xtics format "%H"

set multiplot layout 2,1
plot 'data.txt' using 1:3 with lines

set xtics 60*60
replot
unset multiplot

存在data.txt

2013-08-25 18:45:11 100
2013-08-25 19:11:23 200
2013-08-25 20:00:32 400
2013-08-25 21:00:32 300

结果是:

在此处输入图像描述

如果您提供了这样一个最小的数据文件和错误的结果图像,那就太好了。

于 2013-09-16T19:37:49.397 回答
0

我最终通过添加分钟信息来“解决”这个问题。不是我想要的,但它会做。

set xtics format "%H:%M"
于 2013-09-16T19:20:40.370 回答
-1

您可以像这样专门设置 xtics 的位置:

set xtics 10.,1.,20.

这将使抽动在 18 到 20 的区间内,它们之间的距离为 1。即 10,11,12,13,...,18,19,20

于 2015-12-07T15:59:32.340 回答