我有一个整洁的数据框,类似于以下内容:
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"))
我想基于portSel
变量创建一个具有特定颜色的条形图。
以下是我正在使用的代码:
library(highcharter)
myColors <- c("#002F80", "#F9AF38")
highchart() %>%
hc_add_series_df(data = tidyDF,
type = "bar",
x = PORT_NAME,
y = TOTAL_TONS,
group = portSel) %>%
hc_xAxis(title = list(text = "Ports"),
tickmarkPlacement = "on",
tickLength = 0,
labels = list(
enabled = FALSE
)) %>%
hc_yAxis(title = list(text = "2014 Total Tonnage")) %>%
hc_legend(enabled = FALSE) %>%
hc_colors(myColors)
我在group
中尝试了color
和hc_add_series_df
。都没有正常工作。当我使用group = portSel
时,如上所述,颜色是正确的,但它移动单个YES端口以与第一个NO端口分组。当我使用color = portSel
时,它会将YES端口放在正确的位置,但它不再使用myColors
中的自定义颜色。
欢迎任何建议! 感谢。
答案 0 :(得分:1)
我修改了上一个答案。
您没有以正确的方式使用群组。 group
选项是创建/添加多个系列,这就是第一个yes
与第一个no
相邻的原因,因为该值按顺序排列。
关于颜色,函数hc_add_series_df
根据给定的颜色变量着色点(条,列),因此不要使用hc_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)
这对你有帮助吗?
上一个答案。
您可以尝试在hc_xAxis
添加下一个参数:type = "categorical", categories = tidyDF$PORT_NAME,
,并在hc_add_series_df
中仅使用群组。由于您放置了2个系列(每组一个),您会看到一个条形图,其中“是”列略有位移,例如http://www.highcharts.com/demo/column-parsed
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)