我想为我正在开发的闪亮应用程序解决以下问题。
我的问题是:如何在ggplot上写出AUC,Cmax及其标准差的值。
示例数据如下所示:
data <-
ID TIME DV AUC Cmax SD_AUC SD_Cmax
1 0 0 1.4 4.1 0.8 0.5
1 1 0.5 1.4 4.1 0.8 0.5
1 2 2 1.4 4.1 0.8 0.5
1 3 4 1.4 4.1 0.8 0.5
1 4 6 1.4 4.5 0.8 0.5
1 5 3 1.4 4.5 0.8 0.5
1 6 2 1.4 4.5 0.8 0.5
1 7 1 1.4 4.5 0.8 0.5
绘图编码:
plotobj <- ggplot(data)
plotobj <- plotobj + geom_line(aes(x=TIME, y=DV), colour="red", size=1)
情节应该接近这个:(我在excel中绘制的情节仅用于演示)
如何使用ggplot在R中实现此目的?
注意:AUC,Cmax和SD的值会根据shinyapp中的某些参数而更改(更新)。因此,ggplot代码应该是通用的,并且取相应列中的任何值。
我以AUC的代码为例:
plotobj <- plotobj + annotate("text", x = 6, y = 5, label = "median AUC", colour = "red", size = 6)
但无法获得那里的数字。
答案 0 :(得分:0)
让我们摘录一些您的数据:
AUC Cmax SD_AUC SD_Cmax
1.4 4.1 0.8 0.5
1.4 4.1 0.8 0.5
1.4 4.1 0.8 0.5
1.4 4.1 0.8 0.5
1.4 4.5 0.8 0.5
1.4 4.5 0.8 0.5
非常重复和无聊!这是不必要的。选择您喜欢的数据转换方法并将其转换为:
metrics = structure(list(Label = structure(c(1L, 3L, 2L, 4L),
Label = c("Median AUC", "Median Cmax", "SD AUC", "SD Cmax"), class = "factor"),
Value = c(1.4, 0.8, 4.5, 0.5)),
.Names = c("Label", "Value"),
class = "data.frame", row.names = c(NA, -4L))
metrics
Label Value
'Median AUC' 1.4
'SD AUC' 0.8
'Median Cmax' 4.5
'SD Cmax' 0.5
实际上,如果您愿意,可以直接进入下一步,但上述数据应该很容易获得并且是一个很好的起点。
annotation = paste(metrics$Label, metrics$Value, sep = " = ", collapse = "\n")
然后你可以添加到你的情节对象:
annotate(geom = "text" label = annotation, x = 6, y = 5)
您必须使用x
和y
值来定位它。
答案 1 :(得分:0)
由于每次更改Shiny
应用中的参数时AUC和Cmax的值都会更新,因此使用geom_text
是可行的方法。我可以看到Gregor上面的答案背后的逻辑,但是使用annotate
可以添加文本,但不能添加在更新Shiny
应用时发生变化的数字。
问题所要求的工作可以使用以下方式完成:
yscalemax <- max(data$DV) #set values for plot limits
xscalemax <- max(data$TIME)*1.1
plotobj <- ggplot(data)
plotobj <- plotobj + geom_line(aes(x=TIME, y=DV), colour="red", size=1)
plotobj <- plotobj + stat_summary(aes(x=TIME, y=DV), fun.y=median, geom="line", colour="red", size=1)
plotobj <- plotobj + geom_text(aes(label = paste("AUC =",AUC)), x = xscalemax*0.8, y = yscalemax*0.6, colour = "red", size = 6)
plotobj <- plotobj + geom_text(aes(label = paste("SD AUC =",SD_AUC)), x = xscalemax*0.8, y = yscalemax*0.55, colour = "red", size = 6)
Cmax等等。在这种情况下,文本的位置将根据max(DV)
和max(TIME)
进行调整,其中AUC
,SD_AUC
的计算值会贴在图上。