Ich versuche, eine lineare Trendlinie zu einem Plotplot in einer glänzenden App hinzuzufügen. Wenn ich die Auswahlparameter ändere, sehe ich, dass sich die Koeffizienten des linearen Modells ändern (unter Verwendung observe(print(summary(l))
. Jedoch scheint die tatsächliche Linie auf der Handlung an der gleichen Stelle zu bleiben.Plotly lineare Trendlinie nicht in glänzend
Hier ist ein Diagramm, wo die Trendlinie bei scheint dest in der Nähe der beiden Punkte zu schneidenden:
In einem anderen Grundstück, ist die Trendlinie bei weitem nicht dem ersten Punktes:
hier ein minimales Arbeitsbeispiel ist:
library(dplyr)
library(shiny)
library(plotly)
df <- as.data.frame(list("UserID"=c(1,1,1,1,2,2,2,2),
"QuestionID"=c(4,4,5,5,4,4,6,6),
"KeystrokeRate"=c(8,4,6,15,8,6,7,8),
"cumul.ans.keystroke"=c(1,7,1,5,1,14,1,9),
"Relative.Time.Progress"=c(0.1,1.0,0.4,1.0,0.8,1.0,0.8,1.0)
))
ui <- (fluidPage(
sidebarLayout(
sidebarPanel(
selectInput("userInput","Select User", sort(unique(df$UserID)),
selected = sort(unique(df$UserID))[1]),
uiOutput("answerOutput")#,
),
mainPanel(
plotlyOutput("mainPlot")#,
)
)
))
server <- function(input, output, session) {
# filter only based on selected user
filteredForUser <- reactive({
try(
df %>%
filter(
UserID == input$userInput
), silent=T)
})
# filter for both user and answer
filteredFull <- reactive({
try (
df %>%
filter(
UserID == input$userInput,
QuestionID == input$answerInput
), silent=T)
})
# filter answer choices based on user
output$answerOutput <- renderUI({
df.u <- filteredForUser()
if(!is.null(df)) {
selectInput("answerInput", "Select A Typing Session",
sort(unique(df.u$QuestionID)))
}
})
output$mainPlot <- renderPlotly({
if (class(filteredForUser()) == "try-error" ||
class(filteredFull()) == "try-error") {
return(geom_blank())
} else {
# plot scatter points and add trend lines
p <- plot_ly(filteredFull(), x=Relative.Time.Progress, y=cumul.ans.keystroke,
mode='markers', color=KeystrokeRate, size=KeystrokeRate,
marker=list(sizeref=100), type='scatter')
l <- lm(cumul.ans.keystroke ~ Relative.Time.Progress,
data=filteredFull())
observe(print(summary(l)))
p <- add_trace(p, y= fitted(l))
p
}
})
}
shinyApp(ui, server)
Ahh, danke! Also was genau macht es, indem man die X-Achse hinzufügt? –
Bearbeitete die Antwort, dauerte eine Weile, um es herauszufinden, da es das erste Mal ist, dass ich mit 'plotly()' arbeite. Ich dachte, es wäre ein "glänzendes" Thema. – Divi
Danke für die Klarstellung! Macht Sinn. Plotly braucht wirklich eine bessere Dokumentation! –