【问题标题】:can i convert a base plot in r to a ggplot object?我可以将 r 中的基本图转换为 ggplot 对象吗?
【发布时间】:2016-10-26 23:37:01
【问题描述】:

我对 R 有点陌生,我喜欢 ggplot - 这就是我用于绘图的全部内容,所以我不知道 R 中基础图所需的所有古老语法(我宁愿不学习它)。我正在运行 pROC::roc 并且我想在 ggplot 中绘制输出(这样我可以微调它的外观)。我可以立即得到一个情节如下:

size <- 100
response <- sample(c(0,1), replace=TRUE, size=size)
predictor <- rnorm(100)
rocobject <- pROC::roc(response, predictor,smooth=T)
plot(rocobject)

要改用 ggplot,我可以从输出创建一个数据框,然后使用 ggplot(这不是我的问题)。我想知道的是我是否可以以某种方式自动将上面代码中的绘图“转换”为ggplot,以便我可以在ggplot中做我想做的事情?我到处搜索,似乎找不到这个“基本”问题的答案。谢谢!!

【问题讨论】:

  • methods中没有ggplot
  • 答案或多或少是否定的。 ggplot2 建立在 grid 图形系统之上,与 ggplot2 不同。现在可以使用gridGraphics 包将grid 图形与基本图形组合成一个图形“矩阵”。
  • Paul murrel 做了一些工作将基础转换为网格...接近您想要的 github.com/pmur002/gridgraphics
  • 谢谢 Tyler - 这看起来很有帮助!

标签: r plot ggplot2 base


【解决方案1】:

不,我认为很遗憾这是不可能的。

尽管这不能回答你真正的问题,但用 ggplot 构建它实际上并不困难。

你原来的情节:

plot(rocobject)

在ggplot中:

library(ggplot2)
df<-data.frame(y=unlist(rocobject[1]), x=unlist(rocobject[2]))
ggplot(df, aes(x, y)) + geom_line() + scale_x_reverse() + geom_abline(intercept=1, slope=1, linetype="dashed") + xlab("Specificity") + ylab("sensitivity")

【讨论】:

【解决方案2】:

迟到总比没有好?我认为 ggplotify 包可能会做你想做的事。您基本上将您的绘图生成代码插入到 as.ggplot() 函数中,如下所示:

p6 <- as.ggplot(~plot(iris$Sepal.Length, iris$Sepal.Width, col=color, pch=15))

https://cran.r-project.org/web/packages/ggplotify/vignettes/ggplotify.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多