【问题标题】:R highcharter - trim row labels but not in tooltipR highcharter - 修剪行标签但不在工具提示中
【发布时间】:2020-07-06 21:53:30
【问题描述】:



我想显示一个 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>')

非常感谢!

【问题讨论】:

    标签: r-highcharter


    【解决方案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>')
    

    【讨论】:

    • 谢谢!在工具提示中应该有全名。
    猜你喜欢
    • 2020-07-25
    • 2020-03-29
    • 2021-09-07
    • 2018-04-07
    • 2018-12-07
    • 2021-03-20
    • 2018-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多