R Highcharter:工具提示定制
R Highcharter: tooltip customization
我在闪亮的仪表板中使用 highcharter 创建了一个图表,我正在尝试自定义工具提示。该图表是线图和散点图的组合。我希望它执行以下操作:
1) 有一个悬停信息框(目前有一个用于行,一个用于散点)
2) 能够使用系列 x 或 y 值中未使用的不同信息列
我希望工具提示针对每个特定的 x 轴值显示以下信息(无论我将鼠标悬停在散点还是散点线上)。
总体
平均值:2 [平均值:数据 $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)
首先,您需要添加所有数据而不是仅提供矢量(矢量不包含您想要的工具提示的所有信息)。
为此,您需要使用 data.frame
和 mapping
参数中的 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)
我在闪亮的仪表板中使用 highcharter 创建了一个图表,我正在尝试自定义工具提示。该图表是线图和散点图的组合。我希望它执行以下操作:
1) 有一个悬停信息框(目前有一个用于行,一个用于散点)
2) 能够使用系列 x 或 y 值中未使用的不同信息列
我希望工具提示针对每个特定的 x 轴值显示以下信息(无论我将鼠标悬停在散点还是散点线上)。
总体
平均值:2 [平均值:数据 $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)
首先,您需要添加所有数据而不是仅提供矢量(矢量不包含您想要的工具提示的所有信息)。
为此,您需要使用 data.frame
和 mapping
参数中的 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)