【问题标题】:rCharts HighCharts how to color zonesrCharts HighCharts 如何为区域着色
【发布时间】:2015-06-10 18:19:40
【问题描述】:

我遇到了一个问题,我无法为我正在处理的图表的不同部分着色。我想根据 y 轴上的阈值更改颜色。从高级图表 javascript 查看文档似乎很容易,但是当我尝试将其转换为 R 以使用 rCharts 时它失败了。这是我所拥有的,带有一个名为 final 的示例数据框。

library(rCharts)
final <- data.frame(x = c(1,2,3,4,5), y = c(15,17,20,21,22), radius = rep(3,5))
temp <- apply(final[,c("x","y","radius"])], 1, as.list)
a <- Highcharts$new()
a$series(animation = FALSE, name = "placeholder", data = temp, type = "scatter", 
lineWidth = 1, zoneAxis = "y", zones = list(list(value = 20, 
                                                 color = "rgba(223, 83, 83, 0.5)"),
                                            list(color = "rgba(50, 205, 50, 0.5)")))

这不会改变默认颜色的绘图,所以我很困惑,非常感谢任何帮助或可能的其他解决方案。谢谢!

这是根据此处的区域文档建模的:http://www.highcharts.com/docs/chart-concepts/series#4aaN

【问题讨论】:

    标签: r highcharts rcharts


    【解决方案1】:

    以下是我不明白的地方: 这段代码在c()里面有一个]没有意义;

    temp <- apply(final[,c("x","y","radius"])], 1, as.list)
    

    我猜你的意图是选择所有列,这可以通过一个简单的实现:

    temp <- apply(final[ , ], 1, as.list)
    

    但这段代码对我来说似乎也很奇怪,因为只需:

    temp <- apply(final, 1, as.list)
    temp
    [[1]]
    [[1]]$x
    [1] 1
    
    [[1]]$y
    [1] 15
    
    [[1]]$radius
    [1] 3
    
    
    [[2]]
    [[2]]$x
    [1] 2
    
    [[2]]$y
    [1] 17
    
    [[2]]$radius
    [1] 3
    
    
    [[3]]
    [[3]]$x
    [1] 3
    
    [[3]]$y
    [1] 20
    
    [[3]]$radius
    [1] 3
    
    
    [[4]]
    [[4]]$x
    [1] 4
    
    [[4]]$y
    [1] 21
    
    [[4]]$radius
    [1] 3
    
    
    [[5]]
    [[5]]$x
    [1] 5
    
    [[5]]$y
    [1] 22
    
    [[5]]$radius
    [1] 3
    

    如果你当然想要的话。

    编辑:颜色改变(另一种方法)

    我改变了颜色,尽管我不得不承认我实现了这个解决方案,因为我不知道rgba 函数属于哪个包。 我将rgba 更改为rgb,我没有引用它(你确定它应该被引用吗?)我将max = 255 设置为rgb。这是代码。

    a$series( animation = FALSE, name = "placeholder",
                data = temp, type = "scatter",
                lineWidth = 1, zoneAxis = "y",
                zones = list(list(value = 20,
                            color = rgb(223, 83, 83, 0.5, max = 255)),
                          list(color = rgb(50, 205, 50, 0.5, max = 255))
                          )
                )
    

    【讨论】:

    • 抱歉,这是一个错字。我在本地做的时候没有打错字,所以我得到了和你一样的 temp 输出。我只是无法让这些区域正确着色。不确定是否有解决方案。如果你知道怎么可能的话,如果我可以单独为每个点着色,那也会很有趣。谢谢。
    • 嘿 SabDem,抱歉我有段时间没有查看这篇文章。我会接受答案!谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-07
    • 1970-01-01
    • 1970-01-01
    • 2015-08-22
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多