csvファイル入力のさまざまなグラフを出力するRプログラムを設計しています。私は Rstudio Shiny と ggPlot2 (そしておそらく後で D3!) を使用してプログラムを開発しています。ただし、これらの言語は初めてなので、いくつかの大きな問題に直面しています。これまでの私のプログラムは次のとおりです。
2 日前の私からの関連記事: How to Specify Columns when a user choose a file to upload in R?
サーバー.R
library(shiny)
library(datasets)
library(ggplot2)
X <- read.csv(file.choose())
# Define server logic required to summarize and view the selected dataset
shinyServer(function(input, output) {
# Generate a summary of the dataset
output$summary <- renderPrint({
dataset <- X
summary(dataset)
})
# Show the first "n" observations
output$view <- renderTable({
head(X, n = input$obs)
})
createPlot <- function(df, colx, coly) {
ggplot(data=df, aes(x=df[,colx],y=df[,coly]), environment = environment()) + geom_point(size = 3) + geom_line()
}
Y <- reactive({
X
})
# create a basic plot
output$plotBasic <- reactivePlot(function() {
df <- Y()
print(createPlot(df, colx=input$xa, coly=input$ya))
})
})
ui.R
library(shiny)
# Define UI for dataset viewer application
shinyUI(pageWithSidebar(
# Application title
headerPanel("My app!"),
# Sidebar with controls to select a dataset and specify the number
# of observations to view
sidebarPanel(
numericInput("obs", "Number of observations to view:", 13),
numericInput("xa", "Column to plot as X-axis:", 1),
numericInput("ya", "Column to plot as Y-axis:", 2)
),
# Show a summary of the dataset and an HTML table with the requested
# number of observations
mainPanel(
tabsetPanel(
tabPanel("Table", tableOutput("view")),
tabPanel("BasicGraph", plotOutput("plotBasic"))
)
)
))
プログラムにいくつか問題があります。読み込んだcsvデータの列名をグラフに表示する方法がわかりません(アップロードしたファイルは何でも構いません)。また、グラフ表示(ggplot関数のgeom)を変更しようとするたびに、グラフは変更されません。ここで「geom_line()」を追加しましたが、ドットしか表示されません。stat_smooth() を実行しようとすると、平滑化も表示されません。
もう 1 つの問題は、グラフがデータを順番に表示していないことです (たとえば、私が渡したデータセットでは、月は 6 月、7 月、8 月の順に並んでいますが、グラフではごちゃ混ぜになっています)。
助けてくれてありがとう。
実行できない場合に備えて、プログラムがどのように見えるかの写真を添付しました。