直接在高级版中更改条形颜色' hcchart功能

时间:2017-01-02 15:02:26

标签: r highcharts

我试图在使用hchart()函数绘图时更改条形图条的默认颜色。从文档我假设添加一个"颜色"参数应该有效,但是下面的代码会生成紫色条而不是黑条。

hchart(head(mtcars), "column", x = rownames(head(mtcars)), y = disp, color = '#000000')

我可以通过使用API​​创建图表来实现所需的效果,但是我发现使用hchart()函数非常方便,我想知道颜色变化是否可以通过这种方式实现。

1 个答案:

答案 0 :(得分:2)

据我了解,函数hchart.data.frame的实现以及包get_hc_series_from_df中的帮助函数colorizehighcharter存在错误。当前github version以一种非常不同的方式处理这个问题,但我认为这个版本尚未准备就绪。所以目前我提出了一个非常难看的解决方案:

通过colorize

更改fixInNamespace("colorize", "highcharter")的实施
function (x, colors = c("#440154", "#21908C", "#FDE725")) 
{
    nuniques <- length(unique(x))
    palcols <- (grDevices::colorRampPalette(colors))(nuniques)
    if (!is.numeric(x) | nuniques < 10) {
        y <- as.numeric(as.factor(x))
        xcols <- palcols[y]
    }
    else {
        ecum <- ecdf(x)
        xcols <- palcols[ceiling(nuniques * ecum(x))]
    }
    xcols
}

function (x, colors = c("#000000", "#21908C", "#FDE725")) 
{
    nuniques <- length(unique(x))
    palcols <- (grDevices::colorRampPalette(colors))(nuniques)
    if (!is.numeric(x) | nuniques < 10) {
        y <- as.numeric(as.factor(x))
        xcols <- palcols[y]
    }
    else {
        ecum <- ecdf(x)
        xcols <- palcols[ceiling(nuniques * ecum(x))]
    }
    xcols
}