0
私は光沢のあるアプリを構築していますが、プロットマップのイベントデータに問題があります。私は過去にプロットした散布図を作成し、plot_ly関数内で 'キー'変数を定義しました。散布図のポイントをクリックすると、キーが抽出され、キーはデータフレームのサブセットに使用され、後続のプロットが生成されます。私は以下のコードで同じ書式を使用していますが、キーはイベントデータに格納されていません。イベントデータには 'curveNumber'と 'pointNumber'のみが含まれます。ここにあるchoroplethマップのために働くようです:https://plot.ly/r/shinyapp-map-click/しかし、私はそれを 'scattergeo'のために働かせることはできません。plotly(scattergeo)のイベントデータがRのShiny
ご協力いただければ幸いです。
library(shiny)
library(plotly)
ui <- shinyUI(fluidPage(
titlePanel("My Shiny App"),
sidebarLayout(
sidebarPanel(
numericInput("idnum", label = h3("ID #"),
value = 3)
),
mainPanel(
plotlyOutput("map"),
verbatimTextOutput("click")
)
)
))
server <- shinyServer(function(input, output) {
output$map <- renderPlotly({
df <- data.frame(id = c(3,6,20,35), lat = c(30.67,32.46,37.83,29.62), lon = c(-97.82, -62.34, -75.67, -85.62))
sub <- df[which(df$id == input$idnum),]
g <- list(
scope = 'north america',
showland = TRUE,
landcolor = toRGB("grey83"),
subunitcolor = toRGB("white"),
countrycolor = toRGB("white"),
showlakes = TRUE,
lakecolor = toRGB("white"),
showsubunits = TRUE,
showcountries = TRUE,
resolution = 50,
projection = list(
type = "miller",
rotation = list(lon = -100)
),
lonaxis = list(
showgrid = TRUE,
gridwidth = 0.5,
range = c(-140, -55),
dtick = 5
),
lataxis = list(
showgrid = TRUE,
gridwidth = 0.5,
range = c(20, 60),
dtick = 5
)
)
plot_ly(sub, lon = ~lon, lat = ~lat, key = ~id, text = ~paste(id), hoverinfo = "text",
marker = list(size = 10),
type = 'scattergeo',
locationmode = 'USA-states') %>%
layout(title = 'Locations', geo = g)
})
output$click <- renderPrint({
d <- event_data("plotly_click")
if (is.null(d)) "Click events appear here" else d
})
})
shinyApp(ui = ui, server = server)
ここで、ポイントをクリックすると、イベントデータにキーが表示されます。しかし、id 20のイベントデータのキーは20ではなく '2'を返し、id 35では '35'ではなく3を返します。それはあなたのためにも起こりますか?なぜそれが第1桁だけを返すのか分かりません。 – SoloAus
これはhttps://github.com/ropensci/plotly/issues/505に関連している可能性があります。あなたの例では、id = 35をid = 40に置き換えると、そのキーに4が与えられます。 2番目のユニットが切断されたようです。 – MLavoie