rgl:低分辨率图例

rgl: low resolution legend

大家好,

我正在使用 rgl 和 shinyrgl 在我的 Shiny 应用程序中生成 3D PCA 图。然后我使用 legend3d 函数来创建图例。从上图中可以看出,图例的分辨率明显低于绘图。还有其他人遇到过这个问题吗?

我在下面包含了用于绘制它的代码。因为它是闪亮的,所以要生成一个完整的工作示例有点困难。我更想看看是否有其他人解决了这个问题。

马特

UI

      tabItem(tabName = "3DTab",
          fluidRow(
            column(6, 
                   rglwidgetOutput(outputId = "TDPCA")),
            column(6,
                   box(title = "Customisation",
                       width = NULL,
                       collapsible = TRUE,
                       selectizeInput(inputId = "TDPCAClass",
                                      label = "Class",
                                      choices = c("Day"))))

服务器

  output$TDPCA <- renderRglwidget({
plot3d(x = TDPCA()$PC1, y = TDPCA()$PC2, z = TDPCA()$PC3, col = TDPCA()[[input$TDPCAClass]],
       xlab = paste("PC1", "-", TDPCA.var()["PC1"], "%"), ylab = paste("PC2", "-", TDPCA.var()["PC2"], "%"), zlab = paste("PC3", "-", TDPCA.var()["PC3"], "%"), type = "p")
       legend3d("topright", 
         legend = c("Monday", "Tuesday", "Wednesday", "Thursday", "Saturday"),
         pch = 16,
         col = palette("default"),
         cex=0.65, inset=c(0))
rglwidget()
})

是的,legend3d 的帮助页面中提到了这个问题。问题是图例是为当前 rgl window 大小生成的,稍后可能会调整大小。您想在调整大小后生成它。

我不太确定你是否可以向 Shiny 询问 rgl window 将以什么大小呈现,但一种可能性只是猜测,例如

  output$TDPCA <- renderRglwidget({
plot3d(x = TDPCA()$PC1, y = TDPCA()$PC2, z = TDPCA()$PC3, col = TDPCA()[[input$TDPCAClass]],
       xlab = paste("PC1", "-", TDPCA.var()["PC1"], "%"), ylab = paste("PC2", "-", TDPCA.var()["PC2"], "%"), zlab = paste("PC3", "-", TDPCA.var()["PC3"], "%"), type = "p")
       par3d(windowRect = c(0, 0, 512, 512))
       legend3d("topright", 
         legend = c("Monday", "Tuesday", "Wednesday", "Thursday", "Saturday"),
         pch = 16,
         col = palette("default"),
         cex=0.65, inset=c(0))
rglwidget()
})

编辑添加:此页面https://groups.google.com/forum/#!topic/shiny-discuss/ZmuZbQfJstg讨论动态设置大小。