所以我使用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"
更改为“设置xtics格式”%H:%M“字体”,“25”,那么它会停止复制,但这并不能解决只想要小时滴答的问题。
.csv文件格式为time, val
。
答案 0 :(得分: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
结果是:
如果您提供了这样一个最小的数据文件和错误的结果图像,那本来不错。
答案 1 :(得分:0)
我最后通过添加分钟信息来“解决”这个问题。不是我想要的,但它会。
set xtics format "%H:%M"
答案 2 :(得分:-1)
你可以像这样专门设置xtics的位置:
List<Element> elementList = elements.stream()
.filter(element -> predicate.test(element.ownText()))
.collect(Collectors.toList());
List<SearchResult> searchResults = elementList.stream()
.map(element -> new SearchResult(element.ownText(),element.baseUri(),element.tagName()))
.collect(Collectors.toList());
这将把抽搐放在18到20的间隔中,它们之间的距离为1。即10,11,12,13,......,18,19,20