Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 装箱日期,但不在x轴上显示每个箱子_R_Ggplot2 - Fatal编程技术网

R 装箱日期,但不在x轴上显示每个箱子

R 装箱日期,但不在x轴上显示每个箱子,r,ggplot2,R,Ggplot2,我有一个满是日期和值对的文件。我想按月份对点进行分类,然后显示一个方框和胡须图。我的问题是我有几个月的数据,所以我只想显示一些x轴标签 我的代码如下所示: library(ggplot2) library(reshape2) library(scales) data <- read.delim("values.tsv", header=TRUE) # Interpret the strings as dates data$Date <- as.Date(data$Date, "%

我有一个满是日期和值对的文件。我想按月份对点进行分类,然后显示一个方框和胡须图。我的问题是我有几个月的数据,所以我只想显示一些x轴标签

我的代码如下所示:

library(ggplot2)
library(reshape2)
library(scales)

data <- read.delim("values.tsv", header=TRUE)

# Interpret the strings as dates
data$Date <- as.Date(data$Date, "%Y-%m-%d %H:%M:%S %z")

# Bin the data by month
data$Date <- cut(data$Date, breaks="1 month")

ggplot(data, aes(factor(Date), Temperature)) +
    geom_boxplot()

ggsave("output.pdf", width=8, height=6, units="in")
实际数据由40个月内的数百个数据点组成。数据被正确地装箱,但是当我试图通过

scale_x_date(date_breaks="4 months", date_labels="%b '%y")
我得到了错误

错误:无效输入:date_trans仅适用于类date的对象


我猜想,
cut
似乎将输入日期转换为其他字符串。如何将x轴值转换回日期,以便对其应用
scale\u x\u date

问题在于
cut
正在将数据转换为因子,因此它不再是日期,因此无法应用
scale\u x\u date

我们可以通过为箱线图创建一个一个月的分组变量,并在
aes
调用中对观察值进行分组来解决这个问题

data$Month <- cut(data$Date, breaks="1 month")

ggplot(data, aes(Date, Temperature, group = Month)) +
  geom_boxplot() +
  scale_x_date(date_breaks="4 months", date_labels="%b '%y")

data$Month问题在于
cut
正在将数据转换为一个因子,因此它不再是一个日期,因此无法应用
scale\u x\u date

我们可以通过为箱线图创建一个一个月的分组变量,并在
aes
调用中对观察值进行分组来解决这个问题

data$Month <- cut(data$Date, breaks="1 month")

ggplot(data, aes(Date, Temperature, group = Month)) +
  geom_boxplot() +
  scale_x_date(date_breaks="4 months", date_labels="%b '%y")

data$Month绘图前是否检查了
Date
的类别?然而,我认为即使它们是日期,通过调用aes(factor(Date))来
您正在ggplot调用中再次将它们转换为因子。因此我认为
缩放x_日期
不起作用。@LorenzoBusetto是的,如果我省略了
剪切
调用,那么我可以在以后成功使用
缩放x_日期
。我假设这意味着
日期
确实包含日期。是吗在绘图之前检查
Date
类?但是,我认为即使它们是日期,也可以通过调用
aes(factor(Date))来检查
您正在ggplot调用中再次将它们转换为因子。因此,我认为
缩放x_日期
不起作用。@LorenzoBusetto Yes如果我省略
剪切
调用,那么我可以在以后成功地使用
缩放x_日期
。我假设这意味着
日期
确实包含以前的日期。