Выберите таблицу Rrows и отобразите на графике - PullRequest
0 голосов
/ 26 мая 2020

Я практикуюсь с R и блестящими предметами. Я могу показать фрейм данных и диаграмму рассеяния, но я хочу, чтобы они взаимодействовали. В частности, я хочу выбрать несколько строк из df и увидеть некоторые точки другим цветом или больше. Я использовал этот как вдохновение. Проблема в том, что моя страница не работает. Вот мой код: КЛИЕНТ:

library(shiny)

ui <- fluidPage(
h1('My dataset'),
 selectInput("select", "Selezona le colonne da mostrare:", names(chocolate), multiple = TRUE),
    dataTableOutput('mytable'),
    hr(),

# [...]
h2('Cocoa Percentage and Rating - Regression Model'),
    sidebarLayout(
        sidebarPanel(
            checkboxInput("Regression", "Regression", value=FALSE),
            checkboxInput("meanCocoa", "Percentuale media cacao", value=FALSE),
            checkboxInput("meanRating", "Rating medio", value=FALSE)
        ),
        mainPanel(
            plotOutput("distPlot4", click="plot_click", brush="plot_brush"),
            verbatimTextOutput("info4"),
            verbatimTextOutput("myBrushInfo"),
            verbatimTextOutput("brushSelection")
        )
    )
)

СЕРВЕР

server <- function(input, output, session){
# dataset
    output$mytable = renderDataTable({
        columns = names(chocolate)
        if (!is.null(input$select)) {
            columns = input$select
        }
        chocolate[,columns,drop=FALSE]
    })


    modelloRL <- lm(Rating ~ CocoaPerc, data=chocolate)
    d <- density(chocolate$CocoaPerc)


    # scatterplot percentage - rating 
    output$distPlot4 <- renderPlot({
        s = input$mytable_rows_selected
        par(mar=c(4,4,1,.1))
        plot(chocolate$CocoaPerc, chocolate$Rating, xlab="Percentuale di cacao", ylab="Rating", 
             bg="chocolate", col="black", cex=1.1, pch=21, frame=FALSE)
        if (input$Regression){
            abline(modelloRL, lwd=2)
        }
        if (input$meanCocoa){
            abline(v=mean(chocolate$CocoaPerc), lwd=2, col="green")
        }
        if (input$meanRating){
            abline(h=mean(chocolate$Rating), lwd=2, col="purple")
        }
        if (length(s)) points(chocolate[s, , drop = FALSE], pch = 19, cex = 2)
 })
}

shinyApp(ui, server)

Я могу выбирать строки из своего набора данных, но на диаграмме рассеяния ничего не происходит. Что я делаю не так?

Вот образец из набора данных (я ищу, как использовать dput, это контрольный пример)

6   A. Morin    Carenero    France  2.75    Criollo Venezuela   70.0    3
8   A. Morin    Sur del Lago    France  3.50    Criollo Venezuela   70.0    4
9   A. Morin    Puerto Cabello  France  3.75    Criollo Venezuela   70.0    4
12  A. Morin    Madagascar  France  3.00    Criollo Madagascar  70.0    3
18  A. Morin    Chuao   France  4.00    Trinitario  Venezuela   70.0    4
25  Acalli  Tumbes, Norandino   U.S.A.  3.75    Criollo Peru    70.0    4
26  Adi Vanua Levu  Fiji    2.75    Trinitario  Fiji    60.0    3
27  Adi Vanua Levu, Toto-A  Fiji    3.25    Trinitario  Fiji    80.0    3
28  Adi Vanua Levu  Fiji    3.50    Trinitario  Fiji    88.0    4
29  Adi Vanua Levu, Ami-Ami-CA  Fiji    3.50    Trinitario  Fiji    72.0    4
30  Aequare (Gianduja)  Los Rios, Quevedo, Arriba   Ecuador 2.75    Forastero (Arriba)  Ecuador 55.0    3

где атрибуты:

str(chocolate)
'data.frame':   884 obs. of  8 variables:
 $ CompanyMaker               : Factor w/ 416 levels "A. Morin","Acalli",..: 1 1 1 1 1 2 3 3 3 3 ...
 $ SpecificBeanOriginOrBarName: Factor w/ 1039 levels "\"heirloom\", Arriba Nacional",..: 175 923 805 567 213 989 1002 1004 1002 1003 ...
 $ CompanyLocation            : Factor w/ 60 levels "Amsterdam","Argentina",..: 19 19 19 19 19 57 17 17 17 17 ...
 $ Rating                     : num  2.75 3.5 3.75 3 4 3.75 2.75 3.25 3.5 3.5 ...
 $ BeanType                   : Factor w/ 42 levels "","Â ","Amazon",..: 10 10 10 10 35 10 35 35 35 35 ...
 $ BroadBeanOrigin            : Factor w/ 101 levels "","Â ","Africa, Carribean, C. Am.",..: 93 93 93 48 93 57 28 28 28 28 ...
 $ CocoaPerc                  : num  70 70 70 70 70 70 60 80 88 72 ...
 $ Rat                        : num  3 4 4 3 4 4 3 3 4 4 ...
...