【问题标题】:plot graph using values based on multiple columns in R使用基于 R 中多列的值绘制图形
【发布时间】:2017-06-21 09:36:31
【问题描述】:

我想在 v1 和 v4 之间为 (v2,v3,v5) 的相等值的子集绘制一个图表,并且也在同一个图表中。我的数据集如下

v1  v2 v3 v4        v5
 3  10 20  1 0.5000000
 1  10 20  2 0.5000000
 2  10 30  1 0.3333333
 1  10 30  2 0.3333333
 1  10 40  1 0.2500000
 1  10 45  1 0.2222222
 1  10 45  1 0.2222222

group_by 给出与上面相同的矩阵。

例如: 绘制这些值的一张图

v1  v2 v3 v4        v5
 3  10 20  1 0.5000000
 1  10 20  2 0.5000000

【问题讨论】:

  • 请澄清:什么样的图表,哪些值要如何绘制?请分享哪些有效,哪些无效,详细说明您已经尝试过的方法。

标签: r ggplot2 group-by subset


【解决方案1】:

不是漂亮的代码,但下面的代码可以满足你在基础 R 中的需求。

df <- read.table(header = TRUE, text = 
"v1  v2 v3 v4        v5
3  10 20  1 0.5000000
1  10 20  2 0.5000000
2  10 30  1 0.3333333
1  10 30  2 0.3333333
1  10 40  1 0.2500000
1  10 45  1 0.2222222
1  10 45  1 0.2222222")

cols <- c("v2", "v3", "v5")
df.u <- unique(df[,cols]) # Get unique rows

# Initialise plot
plot(1, type = "n", xlim = range(df[,"v1"]), ylim = range(df[,"v4"]))

for (i in seq_len(nrow(df.u))) {
  # Subset to unique row
  df.sub <- df[df$v2==df.u$v2[i] & df$v3==df.u$v3[i] & df$v5==df.u$v5[i], ]
  # Plot
  lines(df.sub$v1, df.sub$v4, col = i, type = "b", pch = i, lty = i)
}

【讨论】:

  • 非常感谢...这正是我想要的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-01
  • 2013-04-20
  • 1970-01-01
  • 2021-04-16
  • 2016-01-31
相关资源
最近更新 更多