2017-09-29 36 views
1

我有一个包含多个列的数据框。我绘制了其中一列(Ex Count)值的条形图,我想显示的标签不是“计数”列的值,而是“Rank”列的值。 我不知道如何替换dataLabels中的'point.y'。将自定义值设置为条形图中的标签highchart(Rshiny)

这里是一个重复的例子:

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

山姆,

最简单的方法是使用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)来指定如何在图表中使用每个变量。

+1

太棒了!非常感谢你 –

+1

不客气。请记住,您可以_接受答案,以帮助社区其他人更快地找到答案 – jbkunst

+0

如何接受SO中的答案? –

相关问题