【问题标题】:gnuplot is doubling x axis labels for some reason出于某种原因,gnuplot 将 x 轴标签加倍
【发布时间】:2013-09-05 23:59:51
【问题描述】:

所以我使用 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 格式。

【问题讨论】:

  • 在不知道您的绘图方式的情况下,很难猜测发生了什么。请添加一个 minimal 示例(仅是重现问题所需的那些命令),其中 很少 个数据点可以显示问题。
  • 除了 Christoph 推荐的内容,请发布结果图(或链接)。
  • 我认为你所追求的是设置 xtics 和设置 mxtics。请提供更多详细信息。
  • 当然,我已经更新了。另请注意,当我有超过 5 小时的数据时,这不会复制。大概是因为有足够的东西来满足一些隐藏的最小 xtics 要求。

标签: gnuplot


【解决方案1】:

您必须正确设置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

结果是:

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

【讨论】:

  • 不错!两年前我没有看到这个答案,但我希望现在接受还为时不晚:)
【解决方案2】:

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

set xtics format "%H:%M"

【讨论】:

    【解决方案3】:

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

    set xtics 10.,1.,20.
    

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

    【讨论】:

    • 这对于 OP 拥有的那种时间数据并没有真正的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多