如何绘制随时间变化的变量,并以时间作为行名

用户名

我正在尝试在ggplot2中绘制一个时间序列。假设我使用以下数据结构(2500 x 20矩阵):

set.seed(21)

n <- 2500
x <- matrix(replicate(20,cumsum(sample(c(-1, 1), n, TRUE))),nrow = 2500,ncol=20)

aa <- x

rnames <- seq(as.Date("2010-01-01"), length=dim(aa)[1], by="1 month") - 1
rownames(aa) <- format(as.POSIXlt(rnames, format = "%Y-%m-%d"), format = "%d.%m.%Y")
colnames(aa) <- paste0("aa",1:k)

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

aa <- melt(aa, id.vars = rownames(aa))
names(aa) <- c("time","id","value")

现在,以下用于绘制时间序列的命令产生了一个看起来很奇怪的x轴:

ggplot(aa, aes(x=time,y=value,colour=id,group=id)) + 
  geom_line() 

我发现可以更改日期格式:

aa$time <- as.Date(aa$time, "%d.%m.%Y")
ggplot(aa, aes(x=time,y=value,colour=id,group=id)) + 
  geom_line() 

这看起来更好,但仍然不是一个好的图形。我的问题特别是如何控制x轴的格式。是否必须采用Date格式?在这两种情况下,如何控制显示的休息时间(即年数)?如果Date不使用,这似乎是强制性的否则,ggplot2会对中断使用某种有用的默认值。例如,以下命令不起作用:

aa$time <- as.Date(aa$time, "%d.%m.%Y")
ggplot(aa, aes(x=time,y=value,colour=id,group=id)) + 
  geom_line() + 
  scale_x_continuous(breaks=pretty_breaks(n=10)) 

另外,如果您有任何提示,也可以随意添加以改善图表的整体外观(例如,线条看起来有点不准确,恕我直言)。

eipi10

您可以使用scale_x_date@Gopala提及的格式设置日期这是一个使用数据的简化版本进行说明的示例。

library(dplyr)

# Dates need to be in date format
aa$time <- as.Date(aa$time, "%d.%m.%Y")

# Shorten data to speed rendering
aa = aa %>% group_by(id) %>% slice(1:200)

在下面的代码中,我们使用来每六个月更新一次日期date_breaks="6 months"在这种情况下,这可能比您想要的要多,只是为了说明。如果你想确定哪个月获得突破(如扬/月,月/ 8等),那么你还需要使用coord_cartesian和设置开始日期xlimexpand=FALSE使ggplot不会垫的开始日期。但是在设置时,您expand=FALSE在y轴上也没有任何填充,因此您需要使用手动添加填充scale_y_continuous(我希望能够expand分别为x和y轴设置填充,但是AFAIK不可能)。因为这些中断紧密地包装在一起,所以我们使用一条theme语句将标签旋转90度。

ggplot(aa, aes(x=time,y=value,colour=id,group=id)) + 
  geom_line(show.legend=FALSE) +
  scale_y_continuous(limits=c(min(aa$value) - 2, max(aa$value) + 1)) +
  scale_x_date(date_breaks="6 months", 
               labels=function(d) format(d, "%b %Y")) +
  coord_cartesian(xlim=c(as.Date("2009-07-01"), max(aa$time) + 182), 
                  expand=FALSE) +
  theme_bw() +
  theme(axis.text.x=element_text(angle=-90, vjust=0.5))

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何绘制随时间变化的变量,并以时间作为行名

来自分类Dev

如何绘制随时间变化的图?

来自分类Dev

如何合并随时间变化的变量[R]

来自分类Dev

绘制随时间变化的离散变量(围巾图)

来自分类Dev

如何绘制特定单词随时间变化的频率

来自分类Dev

如何绘制随时间变化的每小时平均值

来自分类Dev

绘制随时间变化的风速和风向

来自分类Dev

绘制随时间变化的频率分布(堆叠)

来自分类Dev

如何使用R评估类别变量随时间的变化?

来自分类Dev

在使用数据透视表和MultiIndexes处理数据框后,如何编写函数来绘制随时间变化的变量

来自分类Dev

识别R中随时间变化的变量

来自分类Dev

两行显示随时间变化的比例值(变量未设置时间格式)

来自分类Dev

当包含随时间变化的协变量时,使用SAS绘制危险图

来自分类Dev

当包含随时间变化的协变量时,使用SAS绘制危险图

来自分类Dev

人口随时间变化

来自分类Dev

随时间变化的数组

来自分类Dev

如何使svg颜色随时间变化

来自分类Dev

如何产生随时间变化的频率波?

来自分类Dev

如何识别未随时间变化的条目?

来自分类Dev

处理视频时,如何使用matplotlib绘制随时间变化的每秒帧数(fps)?

来自分类Dev

使用ggplot2绘制随时间变化的多个频率

来自分类Dev

使用ggplot2绘制随时间变化的多个频率

来自分类Dev

绘制三组假人随时间变化的比例

来自分类Dev

使用折线图绘制随时间变化的数据

来自分类Dev

如何获得另一个变量的开始时间作为该变量的结束时间?

来自分类Dev

如何在Xcode中观察者变量值随时间的变化

来自分类Dev

如何处理类别可能随时间变化的类别变量建模?

来自分类Dev

如何使用dplyr检测面板数据中变量随时间的变化?

来自分类Dev

DBpedia结果随时间变化

Related 相关文章

  1. 1

    如何绘制随时间变化的变量,并以时间作为行名

  2. 2

    如何绘制随时间变化的图?

  3. 3

    如何合并随时间变化的变量[R]

  4. 4

    绘制随时间变化的离散变量(围巾图)

  5. 5

    如何绘制特定单词随时间变化的频率

  6. 6

    如何绘制随时间变化的每小时平均值

  7. 7

    绘制随时间变化的风速和风向

  8. 8

    绘制随时间变化的频率分布(堆叠)

  9. 9

    如何使用R评估类别变量随时间的变化?

  10. 10

    在使用数据透视表和MultiIndexes处理数据框后,如何编写函数来绘制随时间变化的变量

  11. 11

    识别R中随时间变化的变量

  12. 12

    两行显示随时间变化的比例值(变量未设置时间格式)

  13. 13

    当包含随时间变化的协变量时,使用SAS绘制危险图

  14. 14

    当包含随时间变化的协变量时,使用SAS绘制危险图

  15. 15

    人口随时间变化

  16. 16

    随时间变化的数组

  17. 17

    如何使svg颜色随时间变化

  18. 18

    如何产生随时间变化的频率波?

  19. 19

    如何识别未随时间变化的条目?

  20. 20

    处理视频时,如何使用matplotlib绘制随时间变化的每秒帧数(fps)?

  21. 21

    使用ggplot2绘制随时间变化的多个频率

  22. 22

    使用ggplot2绘制随时间变化的多个频率

  23. 23

    绘制三组假人随时间变化的比例

  24. 24

    使用折线图绘制随时间变化的数据

  25. 25

    如何获得另一个变量的开始时间作为该变量的结束时间?

  26. 26

    如何在Xcode中观察者变量值随时间的变化

  27. 27

    如何处理类别可能随时间变化的类别变量建模?

  28. 28

    如何使用dplyr检测面板数据中变量随时间的变化?

  29. 29

    DBpedia结果随时间变化

热门标签

归档