Rのshinyでsortableのrank_listを使って、ggplotのbarplotのX軸の順番を変えられるようなスクリプト #rcommand #shiny 3月 21, 2024 shiny と ggplot2 を使って、sortable パッケージの rank_list() を使用し、ユーザーがインタラクティブに棒グラフの X 軸の順番を変更できる Shiny アプリケーションのスクリプトを作成します。この例では、rank_list() UI コンポーネントを使用してユーザーがドラッグ&ドロップで項目の順番を変更でき、その順番が棒グラフに反映されるようにします。 library(shiny) library(ggplot2) library(dplyr) library(sortable) # Data ui <- fluidPage( titlePanel("動的なX軸順序の棒グラフ(Sortable)"), sidebarLayout( sidebarPanel( # Sortableのrank_list()を使って項目の順序を変更できるUIを作成 rank_list( text = "カテゴリをドラッグして順序を変更:", input_id = "ranked_items", labels = c("A", "B", "C", "D"), # 初期順序 ) ), mainPanel( plotOutput("barPlot") ) ) ) # サーバー定義 server <- function(input, output) { output$barPlot <- renderPlot({ # サンプルデータ data <- data.frame( Category = c("A", "B", "C", "D"), Value = c(23, 45, 10, 50) ) # ユーザーが指定した順序でデータを再配置 ordered_data <- data %>% mutate(Category = factor(Category, levels = input$ranked_items)) # ggplot2を用いて棒グラフを描画 ggplot(ordered_data, aes(x = Category, y = Value)) + geom_bar(stat = "identity", fill = "steelblue") + theme_minimal() + labs(title = "カテゴリ別の値", x = "カテゴリ", y = "値") }) } # アプリの実行 shinyApp(ui = ui, server = server) このスクリプトでは、rank_list() を使用してユーザーがカテゴリの順番をインタラクティブに指定できます。ユーザーが項目をドラッグ&ドロップで並べ替えると、その順序が input$ranked_items に保存され、サーバー側のスクリプトでこの順序を使用してデータフレームを再配置し、棒グラフの X 軸の順番が更新されます。ggplot2 の描画部分では、カテゴリーをファクタとして扱い、ユーザーが指定した順序でレベルを設定しています。