R Highcharter:工具提示自定义

Posted

技术标签:

【中文标题】R Highcharter:工具提示自定义【英文标题】:R Highcharter: tooltip customization 【发布时间】:2018-04-07 18:45:48 【问题描述】:

我在闪亮的仪表板中使用 highcharter 创建了一个图表,我正在尝试自定义工具提示。该图表是组合线和散点图。我希望它执行以下操作:

1) 有一个用于悬停信息的框(目前有一个用于线条和一个用于散点)

2) 能够使用系列 x 或 y 值中未使用的不同列信息

我希望工具提示显示每个特定 x 轴值的以下信息(无论我将鼠标悬停在散点还是线上)。

总体

平均值:2 [平均值:data$avghours]

狗:1 [数据$动物:数据$小时]

以下是我编写的用于演示我的问题的示例代码:

library (shiny)
library (shinydashboard)
library (highcharter)


header <- dashboardHeader(title = "Example")

body <- dashboardBody(

  fluidRow(
    box(title = "example", status = "primary", solidHeader = TRUE, 
        highchartOutput("chart")
    )
   )
)

sidebar <- dashboardSidebar()

ui <- dashboardPage(header, sidebar, body)

server <- function(input, output) 

  date <- c(1,2,3,4,5,6,7,8,9,10)
  hours <- c(1,5,4,1,6,5,7,5,4,3)
  avghours <- c(2,2,2,3,3,3,2,2,2,2)
  animal <- c("dog","cat","cat","cat","cat","cat","cat","cat","dog","dog")
  data <- data.frame(date,hours,avghours,animal)

  output$chart <- renderHighchart(

    highchart() %>%
      hc_add_series(name = "Shipments", data=data$hours, type = "scatter", color = "#2670FF", marker = list(radius = 2), alpha = 0.5) %>%
      hc_add_series(name = "Rolling Mean", data=data$avghours, color = "#FF7900") %>%
      hc_yAxis(min = 0, title = list(text = "Hours")) %>%
      hc_tooltip(crosshairs = TRUE)

  )



shinyApp(ui, server)

【问题讨论】:

你在 Highcharter 的 GitHub 网站上看到 this issue 了吗? 您可以删除shiny 标签和您的应用程序的所有相关代码。这只是一个highcharter 问题。 【参考方案1】:

首先,您需要添加所有数据,而不是只提供向量(向量没有您想要的工具提示的所有信息)。 为此,您需要使用 data.framemapping 参数中的 hcaes 辅助函数更改 data 参数,以定义每个轴中使用的变量:

highchart() %>%
  hc_add_series(data = data, mapping = hcaes(x=date, y=hours), name = "Shipments", type = "scatter", color = "#2670FF", marker = list(radius = 2), alpha = 0.5) %>%
  hc_add_series(data = data, hcaes(date, avghours), name = "Rolling Mean", type = "line", color = "#FF7900") %>%
  hc_yAxis(min = 0, title = list(text = "Hours")) %>%
  hc_tooltip(crosshairs = TRUE)

然后您可以在每个hc_add_series 中使用tooltip 参数来定义每个系列中的工具提示:

highchart() %>%
  hc_add_series(data = data, hcaes(date, hours), name = "Shipments", type = "scatter",
                tooltip = list(pointFormat = "tooltip with 2 values point.animal: point.hours")) %>%
  hc_add_series(data = data, hcaes(date, avghours), name = "Rolling Mean", type = "line",
                tooltip = list(pointFormat = "Avg hour text! point.avghours")) %>%
  hc_yAxis(min = 0, title = list(text = "Hours")) %>%
  hc_tooltip(crosshairs = TRUE)

【讨论】:

谢谢@jbkunst!这很有帮助。有没有办法让两个系列都出现在同一个工具提示上?所以当我将鼠标悬停在上面时,ShipmentsRolling Mean 在同一个框中? 我还不知道。我会调查的

以上是关于R Highcharter:工具提示自定义的主要内容,如果未能解决你的问题,请参考以下文章

R Highcharter自定义图例以仅显示某些值

使用 R 和 ggplot2 语法将自定义工具提示添加到 plotly

R Highcharter Sankey节点列属性问题

Highcharter树形图能显示百分比吗?

如何在 R 中将 Highcharter 图表保存为 gif?

深入研究来自不同组的多个系列 - Highcharter(R 中)