r highcharter包装条形图组与颜色

r highcharter包装条形图组与颜色,r,highcharts,R,Highcharts,我有一个整洁的数据框架,类似于以下内容: tidyDF <- data.frame(PORT_NAME = c("South Louisiana, LA, Port of", "Houston, TX", "Long Beach, CA", "New York, NY and NJ", "Los Angel

我有一个整洁的数据框架,类似于以下内容:

tidyDF <- data.frame(PORT_NAME = c("South Louisiana, LA, Port of",
                               "Houston, TX", "Long Beach, CA",
                               "New York, NY and NJ",
                               "Los Angeles, CA", "Beaumont, TX",
                               "Corpus Christi, TX", "New Orleans, LA",
                               "Baton Rouge, LA", "Mobile, AL"),
                 TOTAL_TONS = c(267390209, 234304391, 170052128, 
                                126158655, 122033848, 87283716, 84928330,
                                84465052, 69185878, 64287565),
                 portSel = c("NO", "NO", "NO", "NO", "NO", "YES",
                             "NO", "NO", "NO", "NO"))
我在
hc\u add\u series\u df
中尝试了
group
color
。两者都不能正常工作。如上所述,当我使用
group=portSel
时,颜色是正确的,但它会将单个YES端口与第一个NO端口分组。当我使用
color=portSel
时,它会将YES端口放在正确的位置,但不再使用
myColors
中的自定义颜色

欢迎任何意见!
谢谢。

我修改了前面的答案

您没有以正确的方式使用组。
group
选项用于创建/添加多个系列,这就是为什么第一个
yes
位于第一个
no
的旁边,因为值是按顺序排列的

关于颜色,函数
hc\u add\u series\u df
根据给定的颜色变量为点(条、列)着色,因此不要使用
hc\u colors
给定的颜色

因此,我认为一个简单的方法就是“手动”添加该系列。这意味着从数据中创建一个包含所需特定数据(和颜色)的列表

tidyDF2 <- tidyDF %>% 
  mutate(color = ifelse(portSel == "NO", myColors[1], myColors[2])) %>% 
  select(y = TOTAL_TONS, color)


highchart() %>% 
  hc_chart(type = "bar") %>% 
  hc_xAxis(labels = list(
    enabled = FALSE
    )) %>%
  hc_add_series(data = list_parse(tidyDF2), showInLegend = FALSE)

这不起作用。类别不一致。博蒙特位于与路易斯安那州南部对齐的顶部。如果我们使用
color=portSel
而不是
,是否存在无法控制颜色的原因<代码>颜色使条形图正确排列,但我无法控制特定的颜色。我尝试了
hc\u颜色
,并通过
hc\u主题
向主题添加颜色。看起来很奇怪。
tidyDF2 <- tidyDF %>% 
  mutate(color = ifelse(portSel == "NO", myColors[1], myColors[2])) %>% 
  select(y = TOTAL_TONS, color)


highchart() %>% 
  hc_chart(type = "bar") %>% 
  hc_xAxis(labels = list(
    enabled = FALSE
    )) %>%
  hc_add_series(data = list_parse(tidyDF2), showInLegend = FALSE)
highchart() %>%
  hc_add_series_df(data = tidyDF,
                   type = "bar",
                   x = PORT_NAME,
                   y = TOTAL_TONS,
                   group = portSel) %>%
  hc_xAxis(title = list(text = "Ports"),
           type = "categorical",
           categories = tidyDF$PORT_NAME,
           tickmarkPlacement = "on",
           tickLength = 0,
           labels = list(
             enabled = TRUE
           )) %>%
  hc_yAxis(title = list(text = "2014 Total Tonnage")) %>% 
  hc_legend(enabled = FALSE) %>%
  hc_colors(myColors)