使用 R Shiny 和 plotly 制作散点图
Using R Shiny with plotly to make a scatterplot
我是 Rshiny 的新手,我想弄清楚为什么我的代码没有给我一个绘图。我有一个名为 'final' (tbl_df) 的文件,其中包含我使用的所有列。我正在尝试绘制一个散点图,其中 x 轴和 y 轴都具有相同的列表(在下拉列表中),并试图查看这些值每周如何变化。
当我 运行 应用程序时,我得到一个空白图表,但我可以点击我的三个下拉菜单(选择一周、x 轴和 y 轴)。但是,当我点击下拉菜单的不同值时,除了 x 轴和 y 轴标签发生变化外什么也没有发生。
它是这样的:
figure 1
我想知道我是否必须对我的 x 和 y 值以及 'Week' 使用反应式才能工作?我担心缩放是否也是我遇到问题的原因。
这是我的..
library(shiny)
library(plotly)
ui <- fluidPage(
titlePanel("Weekly updates"),
sidebarLayout(
sidebarPanel(
selectInput(inputID = "Week", label= "Choose a week:", choices =unique(final$Week), selected ="44"),
selectInput(inputId = "y", label = "y-axis",
choices =c("Height","Weight","Color", "Shape"),
selected = "Height"),
selectInput(inputId = "x", label = "x-axis",
choices =c("Height", "Weight", "Color", "Shape")
selected = "Weight")
),
mainPanel(
plotlyOutput(outputId = "scatter")
)
)
)
server <- function(input, output) {
output$scatter <-renderPlotly({
plot_ly(data=final) %>%
add_trace(x=~input$x, y=~input$y,
type= 'scatter', mode = 'markers',
text = final$Sample,
hoverinfo = 'text'
showlegend = F)
})
}
shinyApp(ui = ui, server = server)
input$x
和 input$y
return 字符,所以这解析为类似 add_trace(x=~"Height", y=~"Weight",...
而不是 add_trace(x=~Height, y=~Weight,...
.
不过,您可以将其转换为公式
plot_ly(data=final) %>%
add_trace(x = as.formula(paste0("~",input$x)),
y = as.formula(paste0("~",input$y)),
type= 'scatter', mode = 'markers',
text = final$Sample,
hoverinfo = 'text'
showlegend = F)
我明白了。这是我的代码中唯一需要更改的部分...感谢您的帮助!
server <- function(input, output) {
output$scatter <- renderPlotly ({
plot_ly(data=filter(final, Week == input$Week)) %>%
add_trace(
x= as.formula(paste0("~`", input$x, "`")),
y= as.formula(paste0("~`", input$y, "`")),
type = 'scatter'
mode = 'markers'
text = filter(final, Week == input$Week)$Sample,
hoverinfo = 'text'
showlegend = F)
})
}
我是 Rshiny 的新手,我想弄清楚为什么我的代码没有给我一个绘图。我有一个名为 'final' (tbl_df) 的文件,其中包含我使用的所有列。我正在尝试绘制一个散点图,其中 x 轴和 y 轴都具有相同的列表(在下拉列表中),并试图查看这些值每周如何变化。
当我 运行 应用程序时,我得到一个空白图表,但我可以点击我的三个下拉菜单(选择一周、x 轴和 y 轴)。但是,当我点击下拉菜单的不同值时,除了 x 轴和 y 轴标签发生变化外什么也没有发生。
它是这样的: figure 1
我想知道我是否必须对我的 x 和 y 值以及 'Week' 使用反应式才能工作?我担心缩放是否也是我遇到问题的原因。
这是我的..
library(shiny)
library(plotly)
ui <- fluidPage(
titlePanel("Weekly updates"),
sidebarLayout(
sidebarPanel(
selectInput(inputID = "Week", label= "Choose a week:", choices =unique(final$Week), selected ="44"),
selectInput(inputId = "y", label = "y-axis",
choices =c("Height","Weight","Color", "Shape"),
selected = "Height"),
selectInput(inputId = "x", label = "x-axis",
choices =c("Height", "Weight", "Color", "Shape")
selected = "Weight")
),
mainPanel(
plotlyOutput(outputId = "scatter")
)
)
)
server <- function(input, output) {
output$scatter <-renderPlotly({
plot_ly(data=final) %>%
add_trace(x=~input$x, y=~input$y,
type= 'scatter', mode = 'markers',
text = final$Sample,
hoverinfo = 'text'
showlegend = F)
})
}
shinyApp(ui = ui, server = server)
input$x
和 input$y
return 字符,所以这解析为类似 add_trace(x=~"Height", y=~"Weight",...
而不是 add_trace(x=~Height, y=~Weight,...
.
不过,您可以将其转换为公式
plot_ly(data=final) %>%
add_trace(x = as.formula(paste0("~",input$x)),
y = as.formula(paste0("~",input$y)),
type= 'scatter', mode = 'markers',
text = final$Sample,
hoverinfo = 'text'
showlegend = F)
我明白了。这是我的代码中唯一需要更改的部分...感谢您的帮助!
server <- function(input, output) {
output$scatter <- renderPlotly ({
plot_ly(data=filter(final, Week == input$Week)) %>%
add_trace(
x= as.formula(paste0("~`", input$x, "`")),
y= as.formula(paste0("~`", input$y, "`")),
type = 'scatter'
mode = 'markers'
text = filter(final, Week == input$Week)$Sample,
hoverinfo = 'text'
showlegend = F)
})
}