R 发布具有正确的刻度和日期图

R 发布具有正确的刻度和日期图,r,plot,ggplot2,scale,R,Plot,Ggplot2,Scale,我有两个数据帧tur_e和tur_w。下面您可以看到数据框: 土耳其: 图鲁瓦: Time_f turbidity_w 47 2015-06-04 11:45:00 8.4 48 2015-06-04 12:00:00 10.5 49 2015-06-04 12:15:00 9.2 50 2015-06-04 12:30:00 9.1 51 2015-06-04 12:45:00

我有两个数据帧tur_e和tur_w。下面您可以看到数据框: 土耳其:

图鲁瓦:

                 Time_f turbidity_w
 47 2015-06-04 11:45:00         8.4
 48 2015-06-04 12:00:00        10.5
 49 2015-06-04 12:15:00         9.2
 50 2015-06-04 12:30:00         9.1
 51 2015-06-04 12:45:00         8.7
 52 2015-06-04 13:00:00         8.4
然后,我创建了一个独特的数据帧,将浊度和浊度结合起来。我匹配日期(时间)并使用melt重塑数据:

dplr <- left_join(tur_e, tur_w, by=c("Time_f"))
dt.df <- melt(dplr, measure.vars = c("turbidity_E", "turbidity_w"))
我得到以下图表:

我想减少出现在x轴上的日期数。我添加这行代码:

scale_x_date(breaks = date_breaks("6 months"),labels = date_format("%b"))
我得到了以下错误:


我尝试了很多不同的解决方案,但没有一个奏效。任何帮助都将不胜感激!谢谢

两件事。首先,您需要使用
scale\u x\u datetime
(您不仅有日期,还有时间!)。其次,当你切割x时,它实际上只是一个因素,完全失去了时间感。如果您想要每个月的箱线图,您可以通过
cut
group

dt.df %>% mutate(Time_f = lubridate::ymd_hms(Time_f)) %>% 
  ggplot(aes(x = Time_f, y = value, group = cut(Time_f, breaks="month"))) +
  geom_boxplot(outlier.size = 0.3) + 
  facet_wrap(~variable, ncol = 1) + 
  labs(x = "time") +
  scale_x_datetime(date_breaks = '1 month')

两件事。首先,您需要使用
scale\u x\u datetime
(您不仅有日期,还有时间!)。其次,当你切割x时,它实际上只是一个因素,完全失去了时间感。如果您想要每个月的箱线图,您可以通过
cut
group

dt.df %>% mutate(Time_f = lubridate::ymd_hms(Time_f)) %>% 
  ggplot(aes(x = Time_f, y = value, group = cut(Time_f, breaks="month"))) +
  geom_boxplot(outlier.size = 0.3) + 
  facet_wrap(~variable, ncol = 1) + 
  labs(x = "time") +
  scale_x_datetime(date_breaks = '1 month')

您可能需要
ymd
而不是
ymd\u hms
。请提供一个小的可复制的示例可能的副本您是否尝试过按照本SO帖子的建议使用
as.Date
包装您的日期?您可能需要
ymd
而不是
ymd\u hms
。请提供一个小的可复制的示例可能的副本您是否尝试过按照本SO帖子的建议使用
as.Date
包装您的日期?
Error: Invalid input: date_trans works with objects of class Date 
only
dt.df %>% mutate(Time_f = lubridate::ymd_hms(Time_f)) %>% 
  ggplot(aes(x = Time_f, y = value, group = cut(Time_f, breaks="month"))) +
  geom_boxplot(outlier.size = 0.3) + 
  facet_wrap(~variable, ncol = 1) + 
  labs(x = "time") +
  scale_x_datetime(date_breaks = '1 month')