我试图在闪亮的世界地图中确定点击的国家/地区。
我使用了this example for click event和this one for display,此代码有效:
library(shiny)
library(plotly)
library(countrycode)
df <- countrycode_data[,c("iso3c", "country.name")]
df <- df[complete.cases(df),]
df$random <- rnorm(dim(df)[1])
shinyApp(
ui = shinyUI(fluidPage(plotlyOutput("plot"), textOutput("text"))),
server = shinyServer(function(input, output) {
output$text <- renderPrint({
d <- event_data("plotly_click")
ifelse( is.null(d),
"No selection",
as.character(df[as.numeric(d[2])+1,"country.name"]))
})
output$plot <- renderPlotly({plot_ly(df, z=~random, locations=~iso3c,
text=~country.name, type="choropleth")})
}))
当我点击阿富汗这是数据集的第一个国家/地区时,它会正确选择它
但如果我点击阿尔巴尼亚这是第三个,它会返回奥兰群岛,这是第二个,并且不会被Plotly显示。
所以我猜测选择是根据我在原始数据集(包括所有国家/地区)上投影的显示条目列表计算的
我试图在github上找到Plotly使用的国家/地区列表,但我没有成功,我可以用它来移除未知国家并修复这一转变。
答案 0 :(得分:0)
解决方法是使用包countrycode
中包含的国家/地区列表并对其进行绘制,然后删除plotly
未处理(当前)的每个国家/地区。这给了我要删除的ISO代码列表:
CountriesNotInPlotly <- structure(list(
iso3c = c("ALA", "ASM", "AND", "AIA", "ATA", "ATG",
"ABW", "BHR", "BRB", "BMU", "BES", "BIH", "BVT", "IOT", "CPV",
"CYM", "CAF", "CXR", "CCK", "COM", "COD", "COG", "COK", "CUW",
"CSK", "DMA", "FLK", "FRO", "GUF", "PYF", "DDR", "GIB", "GRD",
"GLP", "GUM", "GGY", "HMD", "VAT", "HKG", "IMN", "JEY", "KIR",
"LIE", "MAC", "MDV", "MLT", "MHL", "MTQ", "MUS", "MYT", "FSM",
"MCO", "MSR", "NRU", "ANT", "NIU", "NFK", "MNP", "PLW", "PCN",
"REU", "BLM", "SHN", "KNA", "LCA", "MAF", "SPM", "VCT", "WSM",
"SMR", "STP", "SYC", "SGP", "SXM", "SGS", "SJM", "TKL", "TON",
"TTO", "TCA", "TUV", "UMI", "VGB", "VIR", "WLF", "YMD", "YUG",
"EAZ")), .Names = "iso3c", row.names = c(NA, -88L), class = "data.frame")