ユーザーが特定のグループを選択して ggvis グラフにプロットできるようにする光沢のあるアプリを作成しようとしています。私が抱えている問題は、リアクティブ データをポイントのプロパティ (ポイントの塗りつぶし、形状など) にマップすると、ユーザーがグループを更新するたびにスケールがリセットされることです。したがって、塗りつぶしの色へのグループ アイデンティティのマッピングは、一定のままではありません。グループIDをハードコーディングしてリアクティブ要素の色を塗りつぶすことでこれを修正しようとしましたが、アプリの読み込みが開始されるとエラーの解釈が難しくなり始めました。
これが私の最初の試みのコードです:
ui.R
#ui.R
library(shiny)
library(ggvis)
shinyUI(fluidPage(
# Application title
titlePanel("Old Faithful Geyser Data"),
# Sidebar with a slider input for number of bins
sidebarLayout(
sidebarPanel(
checkboxGroupInput("gear", label = "Gears", choices = c("3","4","5"))
),
# Show a plot of the generated distribution
mainPanel(
uiOutput("ggvis_ui"),
ggvisOutput("ggvis"),
textOutput("jawn"))
)
))
サーバー.R
#server.R
library(shiny)
library(ggvis)
library(dplyr)
shinyServer(function(input, output) {
selected <- reactive(input$gear)
selectedData <- reactive({
mtcars %>%
filter(gear %in% selected())%>%
mutate(gear = as.character(gear))
})
colorRange <- reactive({
c(`3` = "red", `4` = "blue", `5` = "green")[sort(selected())]
})
output$jawn <- renderText(colorRange())
mtcars%>%
ggvis(~wt, ~mpg)%>%
layer_points()%>%
layer_points(data = selectedData, fill = ~gear)%>%
scale_ordinal("fill", range = colorRange) %>%
bind_shiny("ggvis", "ggvis_ui")
})
これを実行すると、次のエラーが表示されます。
Error : x is not a numeric or integer vector
また、別のエラーが発生するソリューションでの他の試みの1つを含むgithubリポジトリと、機能するが再マッピングの問題があるコードを取得しました: https://github.com/JoFrhwld/ggvis_scales
編集:これはggvis v0.3、dplyr v0.3、およびshiny v0.10であると言わなければなりません