2017-09-29 40 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中的答案? –

相關問題