rCharts中的自定义图例(高图)

rCharts中的自定义图例(高图),r,highcharts,rcharts,R,Highcharts,Rcharts,我有一个数据框,看起来像: ## Data df <- data.frame(label = c("A", "B", "C", "D"), color = c("red", "red", "blue", "green"), y = c(10, 11, 12, 13)) ##数据 df下面是我如何解决它的 每个“类别”都被分割成一个单独的系列,其中包含一个x值,以确定其在图形上的位置(highcharts出于某种原因需

我有一个数据框,看起来像:

## Data
df <- data.frame(label = c("A", "B", "C", "D"), 
                 color = c("red", "red", "blue", "green"), 
                 y = c(10, 11, 12, 13))
##数据

df下面是我如何解决它的

每个“类别”都被分割成一个单独的系列,其中包含一个x值,以确定其在图形上的位置(highcharts出于某种原因需要这样做。没有它,图形会堆叠)

下面是一个有效的示例代码:

## Highchart with Legend
## Remark: simply switching showInLegend to TRUE will not work
df$x <- c(0, 1, 2, 3) # add an index to dataframe (starting from 0)
                      # and pass it to h$series data
h <- rCharts:::Highcharts$new()
h$chart(type = "column")
h$series(name = "Category 1 (Red)", color = "red", data = rCharts::toJSONArray2(df[df$color == "red", c("label", "color", "x", "y")], json = FALSE, names = TRUE))
h$series(name = "Category 2 (Blue)", color = "blue", data = rCharts::toJSONArray2(df[df$color == "blue", c("label", "color", "x", "y")], json = FALSE, names = TRUE))
h$series(name = "Category 3 (Green)", color = "green", data =  rCharts::toJSONArray2(df[df$color == "green", c("label", "color", "x", "y")], json = FALSE, names = TRUE)) 
h$xAxis(categories = unique(df$label), labels = list(rotation = 0, align = 'center', style = list(fontSize = '12px', fontFamily = 'Verdana, sans-serif')), replace = FALSE)
h$tooltip(formatter = "#! function() {return this.x + ': ' + this.y; } !#")
h$plotOptions(series = list(color = df$color), column = list(grouping = FALSE))
h # display chart
##带图例的海图
##备注:仅将showInLegend切换为TRUE将不起作用

df$x免责声明:我知道问题是说
rCharts
,我只想使用highcharter软件包添加一个替代方案

就像@Optimus所说的,问题是添加倍数序列。如果您有仲裁编号的系列(示例中的颜色)并希望自动添加,您可以使用允许您使用
hc\u add\u series\u list
功能从数据系列列表中添加倍数系列

library(highcharter)
library(dplyr)

df <- data_frame(label = c("A", "B", "C", "D"), 
                 color = c("red", "red", "blue", "green"), 
                 y = c(10, 11, 12, 13),
                 x = c(1:4)-1)

head(df)

series <- df %>% 
  group_by(color) %>% # each serie is from one color
  do(data = list.parse3(.)) %>% 
  ungroup() %>% 
  mutate(name = paste("I'm color", color)) %>% 
  list.parse3()
最后:

highchart() %>% 
  hc_chart(type = "column") %>% 
  hc_add_series_list(series) %>% 
  hc_xAxis(categories = df$label) %>% 
  hc_plotOptions(column = list(grouping = FALSE))
结果将是:


我知道你是最棒的,但是,当你使用软件包时,请先链接到第一个,然后再链接到主页。在meta上曾经有过这样的案例,用户将合法答案标记为“过度宣传”,认为用户在推广某个软件包。一般用户可能不知道您是包的开发人员。下次小心点,如果我犯了错误,请道歉。Regards@BhargavRao,完全同意。有道理。事实上,在某种程度上,与其他软件包进行通信会使某些任务变得更容易(在本例中,添加多个数据系列)。我将编辑对链接CRAN站点的响应,并将主页移到答案的末尾。谢谢谢谢你,有空的时候一定要去聊天室。这是一个公共聊天,我们可以帮助新用户学习R。(昨天有一个新用户使用highcharter时出现问题,问题已经解决了)。@jbkunst我有一个11级的因子,希望在我的柱状图/图例中有5个“开”,但有6个“关”。灰色,但仍然存在于图例中,因此如果需要,可以打开该系列……由于这是~1年前写的,现在有没有更简单的方法来实现这一点?@jbkunst没有看到这样的选项
series[[1]]

$color
[1] "blue"

$data
$data[[1]]
$data[[1]]$label
[1] "C"

$data[[1]]$color
[1] "blue"

$data[[1]]$y
[1] 12

$data[[1]]$x
[1] 2

$name
[1] "I'm color blue"
highchart() %>% 
  hc_chart(type = "column") %>% 
  hc_add_series_list(series) %>% 
  hc_xAxis(categories = df$label) %>% 
  hc_plotOptions(column = list(grouping = FALSE))