我需要在闪亮的应用上将相关系数放在我的散点图上。下面是我用来说明我的问题的例子。相关文本没有在图上显示。该复选框似乎没有响应。我花了很长时间试图找出原因,但无法做到。任何人都可以让我知道我做错了什么?非常感谢你提前。
#--------------------functions------------------------------------------
corr_eqn <- function(x,y, method='pearson', digits = 2) {
corr_coef <- round(cor.test(x, y, method=method)$estimate, digits = digits)
corr_pval <- tryCatch(format(cor.test(x,y, method=method)$p.value,
scientific=TRUE),
error=function(e) NA)
paste(method, 'r = ', corr_coef, ',', 'pval =', corr_pval)
}
sca.plot <- function (cor.coef=TRUE) {
df <- mtcars %>% filter(cyl==4)
p<- df %>%
ggplot(aes(x=hp, y=mpg))+
geom_point()+
geom_smooth()
if (cor.coef) {
p<- p+geom_text(x=0.9*max(mtcars$hp),
y=0.9*max(mtcars$mpg),
label = corr_eqn(df[['hp']],df[['mpg']],
method='spearman'))
}
return (p)
}
#-------------------------ui----------------------------
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
checkboxInput('cor.cplot',
label = h5('Correlation Coefficient'), value = TRUE)
),
mainPanel(
plotOutput('plot')
)
)
)
#---------------------------server---------------------------------
server <- function(input, output) {
output$plot <- renderPlot ({
sca.plot(cor.coef = input$cor.cplot)
})
}
runApp(shinyApp(ui, server))
答案 0 :(得分:0)
geom工作正常,文本最终超出了你的绘图的极限,因为位置是根据mtcars而不是df的最大值计算的。
这应该有效
p <- p + geom_text(
x = 0.9 * max(df$hp),
y = 0.9 * max(df$mpg),
label = corr_eqn(df[['hp']], df[['mpg']],
method = 'spearman')
)
可能希望使用geom_label来提高可读性
p <- p + geom_label(
x = 0.9 * max(df$hp),
y = 0.9 * max(df$mpg),
label = corr_eqn(df[['hp']], df[['mpg']],
method = 'spearman')
)
答案 1 :(得分:0)