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讨论动态设置大小。
大家好,
我正在使用 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讨论动态设置大小。