如何在 R 中使用 Plotly 在折线图上仅显示一些悬停信息点

Posted

技术标签:

【中文标题】如何在 R 中使用 Plotly 在折线图上仅显示一些悬停信息点【英文标题】:How to show only some hoverinfo points on a line graph with Plotly in R 【发布时间】:2022-01-02 09:23:36 【问题描述】:

我的流量和文章dfs如下:

library(plotly)
library(dplyr)

set.seed(101)
traffic <- data.frame(Date = seq(as.Date("2021-06-01"), as.Date("2021-07-10"), by="days"),
                      Views = round(rnorm(40, 5000, 200),0))

articleData <- data.frame(Date = as.Date(c("2021-06-01", "2021-07-04", "2021-07-10")),
                          article = c("Article 1", "Article 2", "Article 3"))

joinedData <- left_join(traffic, articleData)

我想制作一个显示流量线的曲线图,但是对于发表文章的 3 个日期,我想添加一个人可以覆盖的点,它将显示发表的文章日。以下是我能够汇总的内容:

plot_ly(data = joinedData, x = ~Date, y = ~Views, type = "scatter", mode = "lines") %>%
  add_trace(hoverinfo = "text", text = ~article, mode = "markers")

这在技术上是可行的,但它会在每一天进行标记,而不仅仅是有文章的 3 天。有没有办法忽略标记没有文章的日子?我真的只是想提请人们注意发表文章的日子,并说明该文章是否显示流量激增。

【问题讨论】:

【参考方案1】:

我认为您的问题非常接近。我认为您只需要过滤这三篇文章的数据并创建一个新的数据框。您可以在 add_trace 中使用新数据集。这只会在发表文章的日期上加分。

library(dplyr)
library(plotly)
filteredJoinedData <- joinedData %>%
  filter(article != "NA")

plot_ly(data = joinedData, x = ~Date, y = ~Views, type = "scatter", mode = "lines") %>%
  add_trace(data = filteredJoinedData, hoverinfo = "text", text = ~article, mode = "markers")

给你这张图

【讨论】:

以上是关于如何在 R 中使用 Plotly 在折线图上仅显示一些悬停信息点的主要内容,如果未能解决你的问题,请参考以下文章

SSRS如何在折线图上为我的x轴添加日期范围?

R - ggplot2 Legend没有出现在折线图上[重复]

如何在稀疏点之间插入数据以在 R & plotly 中绘制等高线图

如何使用 JasperReports 6.7.0 在折线图上自定义轴?

R语言plotly可视化:plotly可视化二维直方图等高线图在等高线上添加数值标签自定义标签字体色彩设置鼠标悬浮显示效果(Styled 2D Histogram Contour)

web页面 chart.js 怎样在折线图的点上显示对应数值?