【问题标题】:view, edit and save edits for large number of plots in r在 r 中查看、编辑和保存对大量绘图的编辑
【发布时间】:2013-05-12 14:28:16
【问题描述】:

我有一个包含 1000 个数据框的列表(每个都有 4 列同名)。我想绘制绘图并以交互方式处理它们。以下是示例(单个列表有 3 个数据框)。

# dummy data 
c1 <- rnorm (40, 0.1, 0.02); c2 <- rnorm (40, 0.3, 0.01)
c3 <- rnorm (40, 0.5, 0.01); c4 <- rnorm (40, 0.7, 0.01)
c5 <- rnorm (40, 0.9, 0.03)
Yv <- 0.3 + rnorm (200, 0.05, 0.05)

 # frist dataframe 
    var1 <- data.frame (idnames = paste ("ID", 1:200, sep = ""), Theta = round (c(c1, c2, c3, c4, c5), 2), R = round (Yv, 2),     cltr = c(rep(1:5, each = 40)))

# same dummy data filled in second dataframe 
var3 <- data.frame (idnames = paste ("ID", 1:200, sep = ""), Theta = round (c(c1, c2, c3, c4, c5), 2), R = round (Yv, 2),     cltr = c(rep(1:5, each = 40)))

    # same dummy data filled in third dataframe
    var_5 <- data.frame (idnames = paste ("ID", 1:200, sep = ""), Theta = round (c(c1, c2, c3, c4, c5), 2), R = round (Yv, 2),     cltr = c(rep(1:5, each = 40)))

 # the list (the original list has >1000 dataframes)
    mylist <- list (var1 = var1, var3 = var3, var_5 = var_5)

我想为每个数据框创建相似的图,但我需要一个一个地工作并保存并移至下一个图

# plot for var1
myd1 <- data.frame (mylist[1])
names (myd1) <- c("idnames", "Theta", "R", "cltr")
plot(myd1$Theta, myd1$R, col=myd1$cltr+1, pch = 19, main = names (mylist[1]))
exclude <- identify(myd1$Theta, myd1$R)
## left click on the points you want to exclude (right click to stop/finish)
myd1$cltr1 <- as.numeric ( myd1$cltr)+ 1
myd1$cltr1[exclude] <-  1
plot(myd1$Theta, myd1$R, col=myd1$cltr1, pch = 19, main = names (mylist[1]))

我可以对列表中的其他数据框执行相同的操作,例如 2:

myd2 <- data.frame (mylist[2])
names (myd2) <- c("idnames", "Theta", "R", "cltr")
plot(myd2$Theta, myd1$R, col=myd2$cltr+1, pch = 19, main = names (mylist[2]))
exclude <- identify(myd2$Theta, myd2$R)
## left click on the points you want to exclude (right click to stop/finish)
myd2$cltr1 <- as.numeric ( myd2$cltr)+ 1
myd2$cltr1[exclude] <-  1
plot(myd2$Theta, myd1$R, col=myd2$cltr1, pch = 19, main = names (mylist[2]))

我有一些问题:

(1) 我想循环这个过程,一个图一次弹出我们,编辑完成后,图关闭,下一个数据帧的新图弹出工作,依此类推,继续到列表中的最后一个数据帧.

(2) 是否可以在父列表中循环进程并保存更改,而不是创建新的数据框。

帮助表示赞赏。

【问题讨论】:

  • 有没有办法自动化这个任务? 1000 次手动编辑似乎是 heavy enough load 先看看是否可以更有效地完成。
  • 我没有找到一个,不像人类那样完美,但我认为即使是几个小时或几天的工作也值得这样做,现在我担心循环,谢谢你的建议

标签: r graph plot


【解决方案1】:

我不打算详细说明你想在每个绘图上做什么,但我会构建一个函数来执行你想做的任何绘图和保存,包括一个 scan 行等待然后触发循环的下一次迭代的用户输入。

plotwait <- function(){ # could pass arguments for saving, etc.
    x <- rnorm(100,0,1)
    y <- rnorm(100,0,1)
    plot(y~x)
    # other stuff you want to do to plot here
    z <- scan(nlines=1,quiet=TRUE) # wait for any input
}

for(i in 1:1000)
    plotwait()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-23
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    相关资源
    最近更新 更多