小倍数线图

时间:2014-09-10 20:01:17

标签: r graph plot ggplot2

我试图从数据框创建一个小的多线图,看起来像这样:

Time    A   B   C   D
2013-01-01  69.23580    8.708641    NaN 3.452663
2013-02-01  69.46016    8.353662    NaN 4.601604
2013-03-01  69.62315    9.156498    NaN 3.953704
2013-04-01  71.04144    7.817074    NaN 3.762032
2013-05-01  74.29557    7.971487    NaN 4.475369

理想情况下,我希望在单个图表上显示4个图,显示数据框中每个变量的线图。我使用以下代码(在melt数据框之后),但它给了我一些非常奇怪的结果。

q <- ggplot(data=temp) + 
  geom_line(aes(x=Time, y=value, color=variable), size = 1) + 
  facet_grid(variable~value) +
  xlab("Time")

非常感谢这方面的任何帮助。

1 个答案:

答案 0 :(得分:2)

我不知道您是否会考虑使用facet_wrap功能。

scales参数将改变比例,因为fixed是默认选项。

  

应该修正比例(&#34;固定&#34;,默认),免费(&#34;免费&#34;),或在一个维度上免费(&#34; free_x&#34;,&# 34; free_y&#34)

data_text <- "
Time    A   B   C   D
2013-01-01  69.23580    8.708641    NaN 3.452663
2013-02-01  69.46016    8.353662    NaN 4.601604
2013-03-01  69.62315    9.156498    NaN 3.953704
2013-04-01  71.04144    7.817074    NaN 3.762032
2013-05-01  74.29557    7.971487    NaN 4.475369
"
temp <- read.table(text=data_text, header=TRUE, stringsAsFactors=FALSE)
library(reshape2)

temp <- melt(temp, id.vars=c("Time"))
temp$Time <- as.Date(temp$Time)
library(ggplot2)

library(plyr)
temp <- subset(temp, value > 0)
q2 <- ggplot(data=temp) + geom_line(aes(x=Time, y=value, color=variable), size = 1) + facet_wrap(~ variable, scales = "free_y")

q2 

enter image description here