R 使用ggplot在plotly中禁用悬停文本

R 使用ggplot在plotly中禁用悬停文本,r,ggplot2,plotly,R,Ggplot2,Plotly,我想部分禁用plotly中的悬停文本,将其限制为ggplot中的一个数据帧或geom。在下面的例子中,我只想将鼠标悬停在“城市”上,而不是地图轮廓上。我已经在Python中看到了一个解决方案,但不是R。我如何控制图像大小以保持绘图中的贴图尺寸正确?在的地图演示似乎不在乎 library(mapdata) library(ggplot2) library(plotly) Japan <- map_data("world2Hires", region="Japan") Longitude

我想部分禁用plotly中的悬停文本,将其限制为ggplot中的一个数据帧或geom。在下面的例子中,我只想将鼠标悬停在“城市”上,而不是地图轮廓上。我已经在Python中看到了一个解决方案,但不是R。我如何控制图像大小以保持绘图中的贴图尺寸正确?在的地图演示似乎不在乎

library(mapdata)
library(ggplot2)
library(plotly)


Japan <- map_data("world2Hires", region="Japan")

Longitude <- 140
Latitude <- 36.5
df <- cbind.data.frame(Longitude,Latitude)
df$Name <- "Tokyo"
df$Name_2 <- "Tōkyō"



XX <- ggplot() + geom_polygon(data=Japan, aes(x=long, y=lat, group=group), color="black", fill="white", text="") + coord_equal() + geom_point(data=df, aes(x=Longitude, y=Latitude, text=Name), color="green")
XX 
ggplotly(XX)  ##How to get hover text only on df not Japan, and remove "[object Object]" 

XX <- ggplot() + geom_polygon(data=Japan, aes(x=long, y=lat, group=group), color="black", fill="white", text="") + coord_equal() + geom_point(data=df, aes(x=Longitude, y=Latitude, text=Name_2), color="green")
XX 
ggplotly(XX)  ##Non-Ascii text breaks hover
库(mapdata)
图书馆(GG2)
图书馆(绘本)

日本在阅读您的问题之前,首先我必须承认我不知道plotly和mapdata软件包。但这些看起来非常有用,我开始四处玩,最后制作了一些有用的东西

我认为您出现的一些问题是因为您使用了
ggplotly
功能,而不是我在解决方案中使用的直接
plotly
界面

数据准备

library(mapdata)
library(ggplot2)
library(plotly)

Japan <- map_data("world2Hires", region="Japan")
Longitude <- 140
Latitude <- 36.5
df <- cbind.data.frame(Longitude,Latitude)
df$Name <- "Tokyo"
df$Name_2 <- "Tōkyō"
然后添加成本行并禁用悬停信息(
hoverinfo=“none”
):


p尽管这证实了我的感觉,即plotly比ggplotly更可靠,但它工作得非常完美。你的回答也有助于回答我关于如何控制图像大小的问题。这是layout()中的高度和宽度参数,很高兴我能提供帮助。显示问题解决了吗?是的,它可以在本地和远程服务器上工作。谢谢接下来是与Shiny的集成!签出“什么样的精确参数可用于地理对象”@bluefishThank我将其添加到了@user1561393的答案中
g <- list(
  showland = F,
  coastlinewidth = 0,
  lonaxis = list(
    showgrid = TRUE,
    gridwidth = 0.5,
    range = c(125, 145.8224),
    dtick = 5
  ),
  lataxis = list(
    showgrid = TRUE,
    gridwidth = 0.5,
    range = c(25, 45.52),
    dtick = 5
  )
)
p <- plot_ly(data = df,lon = Longitude,lat = Latitude,name="City",
             text =Name_2,type = "scattergeo",mode = "markers")
p <- add_trace(data=Japan,lon = long,lat = lat, 
               mode = "lines",group=group,line = list(color=toRGB("black"),width = 0.5),
               type = "scattergeo",  hoverinfo = "none",showlegend = F)
p <- layout(p, geo = g)