在bar highchart(Rshiny)中将自定义值设置为标签

时间:2017-09-29 05:57:47

标签: r highcharts shiny

我有一个包含多个列的数据框。我用其中一列(Ex Count)的值绘制条形图,我想显示一个不是' Count'的值的标签。列但是' Rank'的值柱。 我不知道如何更换' point.y'在dataLabels中。

这是一个可重复的例子:

library("shiny")
library("highcharter")

data <- data.frame(Name = c("A", "B", "C", "D", "E"),Count=c(38,44,23,29,26), Rank=10:14)

ui <- fluidPage(
fluidRow(
    column(width = 8,
           highchartOutput("hcontainer",height = "500px")
    )
)
)

server <- function(input, output) {

output$hcontainer <- renderHighchart({
    chart <-  highchart() %>% 
        hc_chart(type = "bar") %>% 
        hc_yAxis(title = list(text = "Count"))

    chart <- chart %>% 
        hc_add_series(name="",data = data$Count, dataLabels = list(enabled = TRUE, format='{point.y}'))

    return(chart)
})
} 

shinyApp(ui = ui, server = server)

有没有人有想法?

非常感谢 萨姆

1 个答案:

答案 0 :(得分:1)

山姆,

最简单的方法是使用hchart函数。

hchart(data, "bar", hcaes(x = Name, y = Count),
       dataLabels = list(enabled = TRUE, format='{point.Rank}'))

enter image description here

这会将所有数据发送到highchart对象,以便您可以通过point.Rank提取每个点/行的信息(使用highcharts / R语言)。

另一种方式是:

highchart() %>% 
  hc_yAxis(title = list(text = "Count")) %>% 
  hc_xAxis(categories = data$Name) %>% 
  hc_add_series(data = data, type = "bar", hcaes(x = Name, y = Count),
                dataLabels = list(enabled = TRUE, format='{point.Rank}'))

您再次发送所有数据:hc_add_series(data = data, ...),而不仅仅是计数值。当您对数据框使用hc_add_series函数(是一个通用函数!)时,您需要在映射参数中使用hcaes(x = Name, y = Count)来指定如何使用图表中的每个变量。