r - 通过 paste() 修改悬停格式时,ggplot 更改输出样式
问题描述
当我对代码进行简单修改时发生的变化,我真的很困惑。
我想要的是,在交互式(ggplotly)输出中,悬停框仅显示变量的实际值,而没有变量文本/列名。最好通过一个简单的示例来说明它在哪里工作以及何时发生意外更改:
这里是测试示例:
seq <- 1:10
name <- c(paste0("company",1:10))
value <- c(250,125,50,40,40,30,20,20,10,10)
d <- data.frame(seq,name,value)
p1 <- ggplot(data = d,aes(x=seq,y=value)) + geom_line()
ggplotly(p1)
输出很好。但是,当您将鼠标悬停在该行上时,该框会显示值和列名(此处为:“seq”和“value”)。我想摆脱“seq”和“value”。
我用谷歌搜索并找到了一个简单的解决方案,只需将选项“文本”添加到美学中。
p1 <- ggplot(data = d,
aes(x=seq, y=value, text = value )) +
geom_line()
ggplotly(p1,
tooltip = c("text"))
到目前为止,一切都很好。现在我想我通过一个简单的 paste() 将应该出现在图表中的两个数字粘贴在一起。
p1 <- ggplot(data = d,
aes(x=seq, y=value, text = paste(value, '<br>', seq) )) +
geom_line()
ggplotly(p1,
tooltip = c("text"))
但是,线条消失了!将鼠标悬停在框上会出现在这里和那里,但并非总是如此。
我可以通过将另一个字符串粘贴到 ONE 变量来进一步解决问题。这会导致相同的效果:由于 paste() 函数,线条会消失。我猜这个 paste() 和 geom_line() 之间存在一些问题,但我尝试了各种修改但没有成功。
p1 <- ggplot(data = d,
aes(x=seq, y=value, text = paste("hello: ", value ))) +
geom_line()
ggplotly(p1,
tooltip = c("text"))
有什么想法或建议吗?
在 Stefan 进一步测试和提示后更新:
通过添加一个虚拟组 = 1 作品到它的作品美学:
p1 <- ggplot(data = d,
aes(x=seq, y=value,
group = 1,
text = paste(value, '<br>', seq) )) +
geom_line()
ggplotly(p1,
tooltip = c("text"))
尽管如此,为什么 paste() 对代码有这种影响仍然让我感到困惑。
解决方案
推荐阅读
- angular - 由于 Private 成员,Angular AOT 构建失败
- python - 无法使用 python 抓取“链接文本”
- deep-linking - 在调用的本机应用程序中完成操作后,放置在网站中的深层链接能否将值返回给在浏览器中打开的网站?
- specflow - .net 核心中的 SpecFlow+ 配置文件转换替代方案?
- c# - C# .NET Core - 工厂方法与构造函数
- reactjs - 在 Material UI 中使用带有 AppBar 的菜单的正确方法是什么
- c# - asp.net webapp 的 Cron 或计划任务
- python - 有没有办法在jupyter记事本python中使用BeautifulSoup或Selenium从不同网站刮取LinkedIn链接
- mysql - 将 MsSql 存储过程转换为 MySql - WITH 树中的问题
- javascript - 当 Web 应用程序在 IOS 系统中的任何浏览器中运行时,jquery 中的 ajax post 使用 GET 方法而不是 POST 发送请求