I am trying to assign different colors to my column chart based on value group on xaxis. But I could not figure it out. Please see the picture for what I want. Is there a way to do it in highcharter R package?
Say 0-20 in blue, 21-40 in red, 41-60 in green.
Thank you very much!
library(dplyr)
library(purrr)
weeks <- 96
nx <- 3
ny <- 20
df<-data.frame(rep(seq(24,weeks,24), each = nx * ny), xVar = rep(1:nx, times = weeks/24* ny),zVar=rep(runif(20,min=c(0), max=c(1)),times=4*3),
w1=rep(seq(1,4,1), each = nx * ny))
colnames(df)<-c('weeks','treatment', 'val','w1')
df<-df[order(df$weeks,df$treatment, df$val),]
df$valF<-NULL
df$valF<-df$val*df$w1*df$treatment*-1
df$valF[1:5]<-df$valF[1:5]*-1
df<-df[order(df$weeks,df$treatment, -df$valF),]
yVar<-rep(1:ny,times=weeks/24*nx)
yVar
df<-cbind(df,yVar)
df$yVar<-as.factor(df$yVar)
library(reshape2)
library(highcharter)
df$valF<-round(df$valF,2)
wide<-dcast(df, treatment+yVar~weeks, value.var="valF" )
colnames(wide)<-c('treatment', 'yVar','w24', 'w48','w72','w96')
for (i in 1:60){wide$value1[i]=list(list(sequence = c(wide$w24[i],wide$w48[i],wide$w72[i],wide$w96[i]
)))}
for (i in 1:60){wide$value2[i]=list(list(sequence = c(wide$w24[i],wide$w48[i],wide$w72[i],wide$w96[i]
)))}
for (i in 1:60){wide$value3[i]=list(list(sequence = c(wide$w24[i],wide$w48[i],wide$w72[i],wide$w96[i]
)))}
for (i in 1: 60) {wide$w24[i]<-wide$w24[i]-0.5}
for (i in 1: 60) {wide$w48[i]<-wide$w48[i]-0.5}
for (i in 1: 60) {wide$w72[i]<-wide$w72[i]-0.5}
for (i in 1: 60) {wide$w96[i]<-wide$w96[i]-0.5}
wide$w24[c(1,3,5,7,8,20,30, 35,40,50)]=NA
wide$w48[c(1,3,6,7,8,20,32, 37,40,52)]=NA
wide$w72[c(1,3,9,4,8,20,29,30,36,40,53)]=NA
wide$w96[c(1,3,5,15,8,20,26,28,31,35,40,55)]=NA
for (i in 1:60){wide$valuePoint[i]=list(list(sequence = c(wide$w24[i],wide$w48[i],wide$w72[i],wide$w96[i]
)))}
highchart() %>%
hc_yAxis(max =1, min = -13)%>%
hc_add_series(data = wide$valuePoint[1:60], type = "scatter",name="n1", showInLegend = FALSE, color="black")%>%
hc_add_series(data = wide$value1[1:60], type = "column", name="n2", showInLegend = FALSE, color="skyblue")%>%
hc_motion(enabled = TRUE,
labels = c("week24", "week48","week72","week96"),
series = c(0,1))
What I can create is quite different from this code
highchart() %>%
hc_yAxis(max =1, min = -12)%>%
#hc_xAxis(categories = categories_grouped) %>%
hc_add_series(data = wide$value[1:20], type = "column", showInLegend = FALSE, color="skyblue")%>%
hc_add_series(data = wide$value[21:40], type = "column", showInLegend = FALSE, color="blue")%>%
hc_add_series(data = wide$value[41:60], type = "column", showInLegend = FALSE, color="red")%>%
hc_motion(enabled = TRUE,
labels = c("week24", "week48","week72","week96"),
series = c(0,1,2))
Thank you very much!