R highcharter-修剪行标签,但不在工具提示中

时间:2020-07-01 12:31:24

标签: r-highcharter



我想显示一个高宪章堆积的条形图,其中行标签被剪裁成不显​​示前五个字符。但是,应该在工具提示中显示完整的类别名称。

在上面的示例中,我希望仅在xAxis上使用类别“ 2012”,“ 2013”​​ ..,而在工具提示中应显示整个类别名称。 这是我的代码

bs.table = data.frame(
  Closing.Date = c("Line 2012", "Year 2013", "Year 2014", "Year 2015", "Year 2016"),
  Non.Current.Assets = c(40.4, 30.3, 20.4, 34.5, 20),
  Current.Assets = c(3.2, 3.3, 2.4, 3.5, 2)
)

hc <- highchart() %>% 
  hc_chart(type = "bar") %>%
  hc_plotOptions(series = list(stacking = "normal")) %>%
  hc_xAxis(categories = bs.table$Closing.Date,
      lineColor = 'transparent',
      tickWidth = 0,
      labels = list(enable = TRUE, 
                     align = 'left',
                     x = 5,
                    style = list(fontSize = '1em',color = '#fff'))) %>%
  hc_add_series(name ="Non Current Assets",
            data = bs.table$Current.Assets,
            stack = "Assets",
            dataLabels = list(enabled = TRUE, 
                              inside = TRUE, 
                              align = "right", 
                              style = list(fontSize = '1em',color = '#fff'))) %>%
  hc_add_series(name = "Current Assets",
            data = bs.table$Non.Current.Assets,
            stack = "Assets",
            dataLabels = list(enabled = TRUE, inside = FALSE, align = "right", 
                              style = list(fontSize = '1em',color = '#fff')) ) %>%
  hc_legend(enabled = FALSE) %>%
  hc_tooltip(shared = TRUE,
          headerFormat = '<b>Statement {point.x}</b><br>',
          pointFormat = '<b>{series.name}:</b> {point.y} <br>',
          footerFormat = '<b>Total:  {point.total} </b>')

非常感谢!

1 个答案:

答案 0 :(得分:1)

在创建图表之前,您是否可以仅更改列名称?

# function to get year    
substrRight <- function(x, n){
   substr(x, nchar(x)-n+1, nchar(x))
}

# create year column
bs.table$year = substrRight(as.character(bs.table$Closing.Date), 4)

# alter x axis to use this column
hc <- highchart() %>% 
  hc_chart(type = "bar") %>%
  hc_plotOptions(series = list(stacking = "normal")) %>%
  hc_xAxis(categories = bs.table$year,
           lineColor = 'transparent',
           tickWidth = 0,
           labels = list(enable = TRUE, 
                         align = 'left',
                         x = 5,
                         style = list(fontSize = '1em',color = '#fff'))) %>%
  hc_add_series(name ="Non Current Assets",
                data = bs.table$Current.Assets,
                stack = "Assets",
                dataLabels = list(enabled = TRUE, 
                                  inside = TRUE, 
                                  align = "right", 
                                  style = list(fontSize = '1em',color = '#fff'))) %>%
  hc_add_series(name = "Current Assets",
                data = bs.table$Non.Current.Assets,
                stack = "Assets",
                dataLabels = list(enabled = TRUE, inside = FALSE, align = "right", 
                                  style = list(fontSize = '1em',color = '#fff')) ) %>%
  hc_legend(enabled = FALSE) %>%
  hc_tooltip(shared = TRUE,
             headerFormat = '<b>Statement {point.x}</b><br>',
             pointFormat = '<b>{series.name}:</b> {point.y} <br>',
             footerFormat = '<b>Total:  {point.total} </b>')

修改

这是一种解决方法,几乎​​可以为您提供所需的信息:

highchart() %>% 
  hc_chart(type = "bar") %>%
  hc_xAxis(categories = bs.table$year,
           lineColor = 'transparent',
           tickWidth = 0,
           labels = list(enable = TRUE, 
                         align = 'left',
                         x = 5,
                         style = list(fontSize = '1em',color = '#fff'))) %>%
  hc_plotOptions(series = list(stacking = "normal")) %>%
  hc_add_series(name = "Current Assets", bs.table, "column", hcaes(x = year, y = Current.Assets, stuff = Closing.Date),
                tooltip = list(pointFormat = "<b>{point.stuff}</b><br> <b>{series.name}:</b> {point.y} <br>"),
                dataLabels = list(enabled = TRUE, 
                                  inside = TRUE, 
                                  align = "right", 
                                  style = list(fontSize = '1em',color = '#fff'))) %>%
  hc_add_series(name ="Non Current Assets", bs.table, "column", hcaes(x = year, y = Non.Current.Assets),
                tooltip = list(pointFormat = "<b>{point.stuff}</b><br>"),
                dataLabels = list(enabled = TRUE, inside = FALSE, align = "right",
                                  style = list(fontSize = '1em',color = '#fff')) ) %>% 
  hc_legend(enabled = FALSE) %>%
  hc_tooltip(shared = TRUE,
             headerFormat = '<b>Statement </b>',
             footerFormat = '<b>Total:  {point.total} </b>')