【问题标题】:x axis format in ggplot2ggplot2中的x轴格式
【发布时间】:2014-10-24 13:23:16
【问题描述】:

我正在尝试在 ggplot2 中绘制一个简单的温度随时间曲线。在 8 个月内,我每天都会测量一次平均温度。当我绘制这个时,x 轴变得非常拥挤。如何格式化 x 轴,以便仅将全名的 8 个月和年份(例如 10 月 - 2013 年)用作刻度名称?

这是我目前的代码:

T <- read.table("R_Q_all.csv", header=T, sep=";")
head(T)

      Q       date
1 2.440 2013-10-01
2 2.206 2013-10-02
3 2.172 2013-10-03
4 3.115 2013-10-04
5 3.136 2013-10-05
6 2.788 2013-10-06

library("ggplot2")
library("scales")
ggplot(data=na.omit(T), aes(x=date, y=Q))
+ geom_line()+
+ scale_x_date(breaks = "month", labels=date_format("%m-%Y"))+
+ xlab("date")+
+ ylab("temp"))

Fehler in aes(x = date, y = Q) + geom_line() : 
  nicht-numerisches Argument für binären Operator

这给了我二元运算符有一个非数字参数的错误。

【问题讨论】:

  • T$date 是 POSIXct 还是 Date 类?如果没有,请尝试T$date &lt;- as.Date(T$date)
  • 我不知道如何检查这个。当我从excel中导入它时,它可能是一个字符串。所以我试着按照你的建议定义日期。不幸的是,这仍然给了我同样的错误。

标签: r date axis-labels


【解决方案1】:

您的date 列必须是使用as.Date 的日期时间变量,并确保+ 符号出现在每个句子的末尾。这是我的测试代码:

#T <- read.table("R_Q_all.csv", header=T, sep=";")

set.seed(20141028)
T <- data.frame(Q=rnorm(100,mean=2.6428,sd=0.4433),
            date=as.character(as.Date(Sys.time())+c(1:100)),
            stringsAsFactors=FALSE)

head(T)

T$date <- as.Date(T$date)

library("ggplot2")
library("scales")

ggplot(data=na.omit(T), aes(x=date, y=Q))+
geom_line()+scale_x_date(breaks = "month", labels=date_format("%m-%Y"))+
xlab("date")+ylab("temp")

我创建了一个模拟 read.table 输出的 T data.frame,然后转换了名为 date 的字符串列,并且您的 ggplot 代码运行良好。

【讨论】:

  • @Katharina 非常欢迎,如果您认为我的回复是好的答案,您应该接受这个答案。这就是这个网站的运作方式。欲了解更多信息,请访问:stackoverflow.com/help/someone-answers
猜你喜欢
  • 2012-07-29
  • 1970-01-01
  • 2020-05-03
  • 2013-01-03
  • 1970-01-01
  • 2016-01-16
  • 2018-07-18
  • 1970-01-01
相关资源
最近更新 更多