gpt4 book ai didi

R svgPanZoom 自定义大小并添加定位器

转载 作者:行者123 更新时间:2023-12-01 03:28:32 25 4
gpt4 key购买 nike

我目前正在使用令人惊叹的软件包 svgPanZoom 开发一个 Shiny 应用程序,我有两个问题仍未解决:

(1) 是否可以动态自定义图形的大小。我尝试按照代码执行此操作(如 https://stackoverflow.com/questions/33522860/svgplot-error-in-shiny ):

library(shiny)
library(svglite)
library(svgPanZoom)
library(ggplot2)
library(plyr)

data.df <- data.frame(Plant = c("Plant1", "Plant1", "Plant1", "Plant2", "Plant2",
"Plant2"), Type = c(1, 2, 3, 1, 2, 3), Axis1 = c(0.2, -0.4, 0.8, -0.2, -0.7,
0.1), Axis2 = c(0.5, 0.3, -0.1, -0.3, -0.1, -0.8))

ui <- shinyUI(bootstrapPage(

svgPanZoomOutput(outputId = "main_plot")

))

server = shinyServer(function(input, output) {
output$main_plot <- renderSvgPanZoom({
p <- ggplot(data.df, aes(x = Axis1, y = Axis2, shape = Plant, color = Type)) + geom_point(size = 5)
svgPanZoom(p, controlIconsEnabled = T, width = 10, height = 16)
})
})

runApp(list(ui=ui,server=server))

但什么也没发生:(你有什么想法吗?

(2) 您知道是否可以在此代码中包含定位器(如在 PlotOutput 中)

主要思想是在正交系统中绘制(细胞的)图片,然后用户单击图片以定位细胞核。有时图片上的单元格非常小,因此用户可能需要缩放(这就是我使用 svgPanZoom 的原因)。因此,即使用户使用缩放,我想要得到的 X 和 Y 也是整个正交系统中的那些

我看了 Cursor location after zoom using svg-pan-zoom但它似乎不是来自 R

非常感谢您的想法!

有一个美好的星期天晚上!

最佳答案

关于 1):
您的链接不再有效。但也许是惊人的shinyjqui包是你感兴趣的。
您可以添加 jqui_resizabled()在您的 ui 中运行。在您的示例中,它将是:jqui_resizabled(svgPanZoomOutput(outputId = "main_plot")) .您会在输出的左下角找到一个灰色的小符号。

在此处查看一个小的 gif 示例(部分:可调整大小)和其他有趣的功能:https://github.com/Yang-Tang/shinyjqui .

完整代码如下:

library(shiny)
library(svglite)
library(svgPanZoom)
library(ggplot2)
library(plyr)
library(shinyjqui)

data.df <- data.frame(Plant = c("Plant1", "Plant1", "Plant1", "Plant2", "Plant2",
"Plant2"), Type = c(1, 2, 3, 1, 2, 3), Axis1 = c(0.2, -0.4, 0.8, -0.2, -0.7,
0.1), Axis2 = c(0.5, 0.3, -0.1, -0.3, -0.1, -0.8))

ui <- shinyUI(bootstrapPage(

jqui_resizabled(svgPanZoomOutput(outputId = "main_plot"))

))

server = shinyServer(function(input, output) {
output$main_plot <- renderSvgPanZoom({
p <- ggplot(data.df, aes(x = Axis1, y = Axis2, shape = Plant, color = Type)) + geom_point(size = 5)
svgPanZoom(p, controlIconsEnabled = T, width = 10, height = 16)
})
})

runApp(list(ui=ui,server=server))

对于 2) 我不确定。人们可以尝试添加一个点击监听器,但这将是一个相当丑陋的解决方法。也许 smd 其他人知道更好的方法。

关于R svgPanZoom 自定义大小并添加定位器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39817784/

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