我有一个整洁的数据框架,类似于以下内容:
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)
我在hc_add_series_df
中尝试了group
和color
。两者都不能正常工作。当我使用group = portSel
时,如上所述,颜色是正确的,但它将单个YES端口与第一个NO端口分组。当我使用color = portSel
时,它将YES端口放在正确的位置,但它不再使用myColors
中的自定义颜色。
欢迎任何建议!谢谢。
我修改了前面的答案。
你没有以正确的方式使用组。group
选项是创建/添加多于1个系列,这就是为什么第一个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
中只使用group。您将看到一个条形图,其中"yes"列有一点移位,因为您放置了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)