【发布时间】:2017-06-19 19:48:24
【问题描述】:
我有两个变量(条件 1 和条件 2),我已经计算了误报率和命中率,我想将它们绘制在同一个图表上,并分别为条件 1 和条件 2 绘制曲线。这两个条件都有三个点并且都使用相同的误报率。这是我的数据框的样子:
measure <- c('False_Alarm','False_Alarm','False_Alarm', 'Hit_Rate_Condition1',
'Hit_Rate_Condition1','Hit_Rate_Condition1', 'Hit_Rate_Condition2','Hit_Rate_Condition2',
'Hit_Rate_Condition2')
point_on_curve<- c(1, 2, 3, 1, 2, 3, 1, 2, 3)
percentage <- c(0.11, 0.1, 0.01, 0.80, 0.50, 0.20, 0.80, 0.55, 0.25)
ROC_data <- data.frame(measure,point_on_curve, percentage)
误报应该在 x 轴上,命中率应该在 y 轴上。 请注意,我特别对 ROC 包(如 ROCR)不感兴趣,但我认为应该可以仅使用 ggplot 来绘制它。
非常感谢!
附言只是为了表明我至少一直在尝试一些事情并且真的不想让堆栈交换来为我攻读博士学位,我尝试重铸 DF 并将两者分开以制作两个图:
Condition_1 <- dcast(ROC_data, point_on_curve ~ measure)
Condition_1 <- Condition_1[which(!Condition_1$measure == Hit_Rate_Condition2),]
p <- ggplot(data=Condition_1, aes(x=False_Alarm, y=Hit_Rate)) +
geom_point() +
stat_smooth(method = "lm", formula = y ~ splines::bs(x, 1), col = "red") +
expand_limits(x = c(0, 1))
这会导致一些荒谬的线条不是平滑的 ROC(不是我需要的),我仍然需要将两者结合起来......无论如何,必须有一种简单的方法来制作这个情节(我需要再做 18 次)与原始 DF 一次完成......
【问题讨论】:
-
那么您是否尝试使用 ggplot 自己绘制此图?你到底在哪里糟透了?您在这里问的具体问题是什么?现在它读起来就像“请为我做这件事”的帖子,这不是我们在这里鼓励的问题类型。也许你可以编辑你的帖子来澄清一下。
-
@MrFlick 我尝试单独绘制两个,但它们需要在一个情节上。我整天都在试图弄清楚...我猜问题可能与数据框的排列方式有关...我不确定您还需要什么信息?
-
@MrFlick 不公平,我完全被卡住了......
-
好吧,如果您制作了单独的图并且只需要帮助组合它们,请显示您编写的用于制作两个单独的图的代码。这样就可以更容易地看到您正在尝试做什么。
-
@MrFlick 完成,但单独的情节有问题,无论如何必须有更简单的方法。