ggplot 2图形,具有来自不同长度数据帧和不同破折号类型的两个系列

时间:2018-09-14 03:59:38

标签: r ggplot2

我有以下数据,由两个不同长度的数据帧组成。

df1 <- data.frame(cbind(rnorm(20,0.4,0.2), seq(0,200,by=10)))
df2 <- data.frame(cbind(rnorm(30,0.6,0.25), seq(0,270,by=9)))

我想将它们绘制在同一图上,并通过不同类型的虚线将它们彼此区分开。我似乎无法使它正常工作,并且已经在广泛地寻找解决方案。问题是我的两组数据长度不同,因此我不能简单地融化数据并粘贴到ggplot中。

ggplot() + 
  geom_path(data = df1, aes(x = X1, y = X2)) +
  geom_path(data = df2, aes(x = X1, y = X2)) +
  theme_bw() + geom_point() + geom_line() +
  scale_y_reverse()+
  scale_x_continuous(position="top") +
  scale_linetype_manual(values=c("twodash", "dotted")) +
  theme(axis.line=element_line(),
        axis.line.y = element_line(),
        panel.background= element_blank(),
        panel.border = element_blank(),
        panel.grid.major.x = element_blank(),
        panel.grid.minor.x = element_blank(),
        panel.grid.major.y = element_blank(),
        panel.grid.minor.y = element_blank())

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

数据长度不同实际上并不重要,您只需要创建一个新列即可识别哪个数据集,然后可以使用rbind()将它们堆叠在一起:< / p>

df1$Source = "df1"
df2$Source = "df2"

df_combined = rbind(df1, df2)

ggplot(df_combined, aes(x = X1, y = X2, linetype = Source)) + 
    geom_path() +
    theme_bw() +
    scale_y_reverse()+
    scale_x_continuous(position="top") +
    scale_linetype_manual(values=c("twodash", "dotted")) +
    theme(axis.line=element_line(),
          axis.line.y = element_line(),
          panel.background= element_blank(),
          panel.border = element_blank(),
          panel.grid.major.x = element_blank(),
          panel.grid.minor.x = element_blank(),
          panel.grid.major.y = element_blank(),
          panel.grid.minor.y = element_blank())