如何解决使 Shiny 的刷点与 ggplot 和伪日志/log1p 缩放数据一起使用
问题
嗨,我正在尝试在闪亮/闪亮的仪表板中创建一个仪表板,它可以制作各种变量组合的点图。其中一些有异常值,所以我想提供进行日志缩放的选项。但是,某些值也可以为零,因此对数缩放会创建无限值。为了解决这个问题,我可以使用伪对数或 log1p 缩放,但是这会改变图形中的中断并使其不再使用 BrushPoints 函数来选择数据点。
你可以用这个小例子试试:
library(shiny)
library(ggplot2)
# transform <- "log10" # Works,but creates infinite points
transform <- "pseudo_log" # Different breaks,brushedPoints no longer works
# Create some data with zeros
x_data <- runif(200,min = 1,max = 10)^2
y_data <- runif(200,max = 10)^2
x_data[1:20] = 0
y_data[15:34] = 0
df <- data.frame(x_data,y_data)
ui <- basicPage(
plotOutput("plot1",brush = "plot_brush"),verbatimtextoutput("info")
)
server <- function(input,output) {
output$plot1 <- renderPlot({
ggplot(df,aes(x=x_data,y=y_data)) +
geom_point() +
scale_x_continuous(trans=transform) +
scale_y_continuous(trans=transform)
})
output$info <- renderPrint({
brushedPoints(df,input$plot_brush,xvar = "x_data",yvar = "y_data")
})
}
shinyApp(ui,server)
您可以在此处查看两个图的差异:
log10 绘图具有等距间隔(我想要的)并与 BrushedPoints() 函数一起使用,但包括边缘零值的无限点。伪日志图很好地处理零值,但也使中断对数间隔,并且(可能因此?)不适用于 BrushedPoints()。
有人可以帮助我获得 BrushedPoints 工作的 log10 样式图,其中还包括零值吗?
谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。