Highcharts / HighcharteR:R中的50多个系列后,堆积的柱形条变得紧绷

问题描述

我在R中highcharter的堆积柱形图中的细条出现了问题。我创建了以下代码的存储库,想知道是否有人可以帮助我避免使条变得过时的问题当我在图表中添加49个以上的序列时,超级瘦。

任何想法或解决方法将不胜感激。

一如既往,谢谢您。

最好, 内特

library(highcharter)
library(magrittr)
library(viridisLite)

dfmtx<- as.data.frame.matrix(matrix(data = abs(rnorm(n=20*50,mean = 0,sd=1)),ncol = 50))
dfmtx<- dfmtx/rowSums(dfmtx)
df<- data.frame(date=seq.Date(from = as.Date("2001-01-01"),to = Sys.Date(),by="years")[1:20],dfmtx,stringsAsFactors = F)



hc<- highcharter::highchart() %>% 
  highcharter::hc_chart(type = "column") %>%
  #highcharter::hc_plotOptions(column=list(pointWidth=45,pointPadding=0,groupPadding=0.1,padding=0)) %>%
  highcharter::hc_plotOptions(column = list(stacking = "normal"),series=list(cropThreshold=200)) %>%
  highcharter::hc_xAxis(categories = df$date,title=list(text="Fake Date")) %>%
  highcharter::hc_title(text=paste0("Bars Get Skinny When You Add 50"))

for(i in 2:50){ # Smiles...This Works!
#for(i in 2:51){ # Tears..skinny bars :( 
  the_name<- colnames(df)[i]
  hc<- hc %>%
    highcharter::hc_add_series(name=the_name,data = df[,i],stack = "SameStack") 
  
}
# Pretty colors...why not?
cols<- viridisLite::viridis(n=length(hc$x$hc_opts$series))
cols<- base::substr(cols,7)

hc<- hc %>%
  highcharter::hc_yAxis(title=list(text="Proportion"),max=1) %>%
  highcharter::hc_colors(cols) %>%
  highcharter::hc_legend(align="center") 

hc

解决方法

您可以使用hc_size()设置图表的宽度和高度。

for(i in 2:51){ # Tears..skinny bars :( 
  the_name<- colnames(df)[i]
  hc<- hc %>%
    highcharter::hc_add_series(name=the_name,data = df[,i],stack = "SameStack") 
  
}
# Pretty colors...why not?
cols<- viridisLite::viridis(n=length(hc$x$hc_opts$series))
cols<- base::substr(cols,7)

hc<- hc %>%
  highcharter::hc_yAxis(title=list(text="Proportion"),max=1) %>%
  highcharter::hc_colors(cols) %>%
  highcharter::hc_legend(align="center")  %>%
  highcharter::hc_size(height = 800) #Setting chart height to 800.

hc