只是发现闪亮的应用程序,但这让我疯了......我看了很多server.R和ui.R代码的例子,无法弄清楚我做错了什么。如果它是非常基本的东西,请提前道歉..........
以虹膜数据集为例,我想绘制一列与另一列,使用qplot或ggplot
然而,使用qplot我得到这个:
并使用ggplot2,我收到错误:
我认为我不需要反应函数,因为我没有对数据集进行子集化,只是提取列进行绘图。
server.R code
library(shiny)
library(shinyapps)
library(ggplot2)
shinyServer(function(input, output, session) {
output$text1 <- renderText({input$id1})
output$text2 <- renderText({input$select1})
output$plot1 <- renderPlot({
g <- qplot(Sepal.Length, input$select1, data = iris)
print(g)
})
})
或使用ggplot函数替换qplot调用
g <- ggplot(iris, aes(x = Sepal.Length, y = input$select1))
g <- g + geom_line(col = "green", lwd =1) +
labs(x = "Date", y = "Ranking") +
theme_bw() + scale_y_reverse()
ui.R代码
library(shiny)
library(shinyapps)
data(iris)
opts <- unique(colnames(iris))
opts <- opts[-1] ## want to keep Sepal.Length as the x values
shinyUI(pageWithSidebar(
headerPanel('test with iris database'),
sidebarPanel(
selectInput(inputId = "select1", label = "select",
choices = opts),
textInput(inputId = "id1", label = "Input Text", "")
),
mainPanel(
p('Output text1'),
textOutput('text1'),
textOutput('text2'),
plotOutput('plot1')
)
))
答案 0 :(得分:5)
将您的aes
语句更改为aes_string
并将x
更改为字符串。这应该可以解决问题。
g <- ggplot(iris, aes_string(x = "Sepal.Length", y = input$select1))
g <- g + geom_line(col = "green", lwd =1) +
labs(x = "Date", y = "Ranking") +
theme_bw() + scale_y_reverse()