gpt4 book ai didi

r - 将来自多个数据帧的内容绘制到单个 ggplot2 表面中

转载 作者:行者123 更新时间:2023-12-04 22:14:50 25 4
gpt4 key购买 nike

我是这里的 R 初学者,对这个问题具有相应的复杂程度。

我在 R 中使用 ROCR 包来生成 ROC 曲线的绘图数据。然后我使用 ggplot2 绘制绘图。像这样的东西:

library(ggplot2)
library(ROCR)

inputFile <- read.csv("path/to/file", header=FALSE, sep=" ", colClasses=c('numeric','numeric'), col.names=c('score','label'))

predictions <- prediction(inputFile$score, inputFile$label)
auc <- performance(predictions, measure="auc")@y.values[[1]]

rocData <- performance(predictions, "tpr","fpr")
rocDataFrame <- data.frame(x=rocData@x.values[[1]],y=rocData@y.values[[1]])

rocr.plot <- ggplot(data=rd, aes(x=x, y=y)) + geom_path(size=1)
rocr.plot <- rocr.plot + geom_text(aes(x=1, y= 0, hjust=1, vjust=0, label=paste(sep = "", "AUC = ",round(auc,4))),colour="black",size=4)

这适用于绘制单个 ROC 曲线。但是,我想要做的是在整个目录中读取输入文件 - 每个分类器测试结果一个文件 - 并制作所有 ROC 曲线的 ggplot2 多面图,同时仍将 AUC 分数打印到每个图中。

我想了解实现这一目标的“正确”R 风格方法是什么。我确信我可以通过一个循环遍历目录中的所有文件并为每个文件创建一个单独的数据框,然后使用另一个循环创建多个图,并以某种方式让 ggplo2 将所有这些图输出到同一个表面。但是,这不允许我使用 ggplot2 的内置分面,我认为这是正确的方法。不过,我不确定如何将我的数据转换成适当的形状以供分面使用。我是否应该将所有数据帧合并为一个,并为每个合并的块命名(例如文件名)并对其进行分面?如果是这样,是否有图书馆或推荐的做法来实现这一点?

您的建议表示赞赏。我仍然在思考 R 中的最佳实践,所以我宁愿得到专家的建议,而不是仅仅通过修改代码来编写看起来更像我习惯的普通声明式编程语言的代码。

编辑:我最不清楚的是,当使用 ggplot2 的内置分面功能时,我是否仍然能够将自定义字符串(AUC 分数)输出到它将生成的每个图中。

最佳答案

以下是如何按照您的描述生成绘图的示例。我使用内置数据集 quakes :

该代码执行以下操作:

  • 加载 ggplot2plyr包裹
  • quakes 添加一个 facet 变量- 在这种情况下,我按地震深度进行总结
  • 使用 ddply总结每个深度的平均震级
  • 使用 ggplotgeom_text标记平均震级

  • 编码:
    library(plyr)
    library(ggplot2)

    quakes$level <- cut(quakes$depth, 5,
    labels=c("Very Shallow", "Shallow", "Medium", "Deep", "Very Deep"))

    quakes.summary <- ddply(quakes, .(level), summarise, mag=round(mean(mag), 1))

    ggplot(quakes, aes(x=long, y=lat)) +
    geom_point(aes(colour=mag)) +
    geom_text(aes(label=mag), data=quakes.summary, x=185, y=-35) +
    facet_grid(~level) +
    coord_map()

    enter image description here

    关于r - 将来自多个数据帧的内容绘制到单个 ggplot2 表面中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11859269/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com