使用 ggplot2 生成时间序列时出现 R 错误

3
我将使用R中的ggplot2生成一个时间序列图,用于展示每日天气数据的最高温度线,以便在同一图中比较不同年份的数据。以下是我的数据格式:
(head)

        date value year DayOfYear
1 2013-01-01     9 2013         1
2 2013-01-02    10 2013         2
3 2013-01-03    12 2013         3
4 2013-01-04    10 2013         4
5 2013-01-05    10 2013         5
6 2013-01-06     9 2013         6

(tail)
          date value year DayOfYear
405 2014-02-09     8 2014        40
406 2014-02-10     9 2014        41
407 2014-02-11     8 2014        42
408 2014-02-12     9 2014        43
409 2014-02-13     8 2014        44
410 2014-02-14    12 2014        45

我的方法在这个程度上似乎可行:
Gatmax$Date <- as.Date(Gatmax$date, '%d/%m/%Y')
Gatmax <- transform( Gatmax,             
           Year = format(Date, '%Y'),
           DayOfYear = as.numeric( format(Date, '%j')))

但是当我使用ggplot2来绘制数据时:

library("ggplot2")
ggplot(Gatmax, aes(DayOfYear, value)) +
    geom_line(aes(colour = year)) +
    geom_point(aes(shape = year)) +
    scale_shape_identity()

I get the following error:

Error in seq.default(from = best$lmin, to = best$lmax, by = best$lstep) : 
  'from' must be of length 1

奇怪的是,一位有经验的R语言用户正在帮助我,但是使用完全相同的脚本生成绘图时,他没有出现错误。唯一的区别是他们在Windows上使用R而我在Linux上使用。虽然我认为R是跨平台的,但我不认为这是操作系统问题。

非常感谢任何可以提供成功生成绘图的帮助。


你应该使用 dput 命令(输出一个 'Gatmax' 版本的样例)来展示你在 ggplot 中使用的数据。通过谷歌搜索你的错误信息,可以找到 这个链接,它可能表明你所使用的数据与你发布的样例不同。 - Henrik
你可以尝试使用数据样本,也许这能解决问题:as.numeric(as.character(Gatmax$DayOfYear))。 - zoowalk
1个回答

0

这似乎是一个与数据相关的问题。

我曾经遇到过和你一样的错误信息,即“Error in seq.default(from = best$lmin, to = best$lmax, by = best$lstep) : 'from' must be of length 1”,但只有在我使用时才会出现

scales = "free"      # or
scales = "free_y"

但是默认情况下(即未指定比例尺)或者也没有问题

scales = "fixed"

我的解决方案是确保我的数据框非常干净,通过从Y轴数据列中删除所有NA值来实现。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接