【问题标题】:faceting two data sets, two columns with same index on same facet分面两个数据集,同一分面上具有相同索引的两列
【发布时间】:2016-08-12 07:18:23
【问题描述】:

我已经搜索了几个小时,当然发现了一些类似的问题,但我仍然没有成功解决我的问题。

这是我的问题。我有两个数据集相同的列名,在这个例子中也有相同的行名。

假设数据集是:

t <- seq(1, 20, by = 0.5)

num_of_rows <- length(t)

df1 <- data.frame(A = runif(num_of_rows), B = runif(num_of_rows), C = runif(num_of_rows), D = runif(num_of_rows), F = runif(num_of_rows))

dimnames(df1)[[1]] <- t

df2 <- data.frame(A = runif(num_of_rows), B = runif(num_of_rows), C = runif(num_of_rows), D = runif(num_of_rows), F = runif(num_of_rows))

dimnames(df2)[[1]] <- t


df1<-melt(as.matrix(df1))
df2<-melt(as.matrix(df2))
colnames(df1) <- c("X1", "X2", "value")
colnames(df2) <- c("X1", "X2", "value")


ggplot() + geom_line(df1, aes(X1, value, color=factor(X2)), linetype=2) + geom_line(df2, aes(X1, value, color=factor(X2)) + facet_wrap(~X2)

我想要的是将这些数据集绘制为构面,每个构面都包含两个数据集中具有相同索引的列。我已经关注模拟问题的答案,即融化、为数据集编号分配标签等,但我仍然收到十个方面。前五个来自第一个数据集,接下来五个来自第二个。如果您能提供任何帮助,我将不胜感激。

提前谢谢你。

【问题讨论】:

  • 如何绘制它们?哪个绘图功能,ggplot2?显示您尝试过的代码,我们可以告诉您如何修复它。
  • @MrFlick 对不起,我想,这很明显。是的,ggplot。我已经融化了两个数据集,给融化的数据框提供了相同的名称,创建了 ggplot() + geom_line(df1, aes(X1, value, color=factor(X2)), linetype=2) + geom_line(df2, aes(X1, value , color=factor(X2)) + facet_wrap(~X2)
  • 所以在您的问题中包含该代码。没有理由让我们做您已经完成的额外工作。

标签: r


【解决方案1】:

我假设您需要 5 个方面,每个方面有两行由数据源区分。如果是这样,想法是在您的审美中设置colour=factor(src)(或者您选择指示数据来源),然后通过X2 设置facet_wrap(就像您所做的那样)。

df1$src <- 1
df2$src <- 2
d <- rbind(df1, df2)

ggplot(d) + 
  geom_line(aes(X1, value, colour=factor(src))) + 
  facet_wrap(~X2, ncol=5)

【讨论】:

  • 非常感谢,看来正是我想要的。我确实将我的数据集标记为 data1 和 data2,但还没有想出将颜色设置为数据源的想法。你有什么建议,我怎样才能设置一条虚线?
  • 同样的想法:设置linetype=factor(src)ggplot 的文档有许多有用的细节和示例。如果您想要不同的线型,请参阅scale_linetype_manual
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-17
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
相关资源
最近更新 更多