2017-09-14 95 views
0

目前,我有这样的情节,看起来像这样:ggplot x轴麻烦

enter image description here

我不喜欢如何在x轴上有怪异的线/条。我怀疑这可能是因为ggplot无法适应x轴上的所有540000个观测值。下面是我用来绘制此代码:

data %>% 
    ggplot() + 
    geom_point(aes(x = dates_df$date, y = Quantity)) + 
    theme(axis.text.x = element_text(angle = 90, hjust = 1)) + 
    labs(x = "Invoice Date", y = "Quantity", title = "Quantity vs Invoice Date") 

我能做些什么来摆脱/解决在x轴这个烂摊子?

+0

是'date'一个因素现在呢?如果是这样,请考虑将其更改为“日期”并将轴设置为“scale_x_date”。即使使用了一个因子,也可以更改在x轴上显示的中断点数量。 – aosmith

+1

我的猜测是,你使用两个单独的数据框('data'和'dates_df')。为什么不把它们与'dplyr'中的'left_join'结合?这应该解决很多问题。否则,你可以使用'scale_x_ *',也许在这种情况下,它会是'scale_x_date()' –

+0

@aosmith'date'是一个字符。你如何将它改为'日期' –

回答

0

正如在评论中告诉的那样,在Date列中看起来很糟糕,并且您使用了两个单独的数据框。首先加入数据。我认为他们都在列一些标识或其它键,像名:

library("dplyr") 
left_join(data,dates_df,by="id") 

日期也是一个字符作为被提及。要将其更改为Date,如果您尚未执行此操作,请使用as.Date函数。加入

data$date<- as.Date(data$date, "%m/%d/%Y") 

后,您可以在这里找到其他日期格式:http://www.statmethods.net/input/dates.html

你说,有540 000观察X轴。我的建议是将图表分开为独特的一年。要做到这一点,使用ggplot内的facet_grid函数。

library(lubridate)  
ggplot(df, aes(x= df$date,y= df$Quantity))+ 
    geom_point() + 
    facet_grid(~year(df$date)) 

希望它能帮助:)