ggplot2

时间:2016-07-21 20:42:39

标签: r date ggplot2

我试图用图表来描绘一段时间内的人口。但是,日期不是按时间顺序排列的。在导入的CSV中,日期都是正确的并且是有序的。但是,一旦运行下面的代码,所显示的图表没有正确顺序的日期。开始日期位于中间,结束日期位于开始日期的左侧。有什么办法可以解决吗?

sumc <- aggregate(ex2$C, bu=list(ex2$Date, ex2$Temp), FUN=sum)
colnames(sumc) <- c("Date", "Temperature", "Individuals")
ggplot(data= sumc, aes(x=Date, y=Individuals, group=Temperature, colour=Temperature )) + geom_line() + theme(plot.title = element_text(face="bold") 
    ,plot.background = element_blank()
    ,panel.background = element_blank()
    ,panel.grid.major = element_blank()
    ,panel.grid.minor = element_blank()
    ,panel.border = element_blank()
    ,axis.line = element_line(colour="black", size=1)
    ,axis.text.x = element_text(colour="black", size=10)
    ,axis.text.y = element_text(color="black", size=8)
    ,axis.title.x = element_text(colour="black", size=10, face="bold", vjust=-.2)
    ,axis.title.y = element_text(color="black", size=10, face="bold", vjust=1.2)
    ,legend.text=element_text(size=8))

此图像是随时间变化的人口。但正如您所看到的那样,x轴上的日期不正确并且关闭:

This image is the population over time. But as you can see the dates on the x-axis are incorrect and off.

2 个答案:

答案 0 :(得分:3)

转换为Date类:

sumc$Date = as.Date(sumc$Date, format = "%m/%d%/Y")

然后你的相同绘图代码就可以了。

有关转化或?as.Date参数的详细信息,请参阅strptimeformat

答案 1 :(得分:1)

如果您的日期在数据框中以正确的顺序导入,请使用

sumc$Date <- factor(sumc$Date, ordered = T)

在绘图之前

。这将使它们成为基于它们出现顺序的有序因子,ggplot将理解它必须保持这种方式。

修改:如果没有订购日期,您可以订购它们并保存到矢量:

dates <- unique(sort(sumc$Date))
sumc$Date <- factor(sumc$Date, labels = dates,  ordered = T)
相关问题