r-在rCharts+polychart中手动设置点颜色



我试图使用rCharts和polychart前端构建一个图表:

dtf <- data.frame(x=c(1, 2, 3, 4, 5), y=c(4, 5, 6, 3, 5), 
              label=c('one', 'two', 'one', 'two', 'two'))
color.mapping <- list(one='#ff2385', two='#229922')
p2 <- rPlot(x='x', y='y', data=dtf, type='point', color='label')
print(p2)

我想通过使用某种离散映射(如上面的例子)或使用其他逻辑来控制点颜色。是怎么做到的

编辑

根据Ramnath的回答,我试着做以下操作,但我得到了一个空页面:

dtf <- data.frame(x=c(1, 2, 3, 4, 5), y=c(4, 5, 6, 3, 5), 
                  label=c('one', 'two', 'one', 'two', 'two'))
p2 <- rPlot(x='x', y='y', data=dtf, type='point', color='label')
p2$guides(color = list(scale = "#! function(value){
   color_mapping = {one: '#ff2385', two: '#229922'}
   return color_mapping[value];                  
 } !#"))

print(p2)

分辨率从github升级rCharts解决了这个问题。

尽管我们正在尝试创建一个更适合R的解决方案,但目前在Polychart中这有点复杂。但目前,以下是在Polychart 中设置自定义磅秤的方法

p2$guides(color = list(scale = "#! function(value){
  color_mapping = {one: '#ff2385', two: '#229922'}
  return color_mapping[value];                  
} !#"))

这个想法是为色彩美学设定一个尺度。但是,您不使用调色板,而是指定一个函数,该函数将根据映射返回颜色。您需要将函数包装在#!!#之间,以便rCharts将其视为JS文字,并且在转换为JSON时不会对其进行字符串化。

如果您不确定如何在JSON中指定color_mapping,可以使用函数toJSON来转换R对象。唯一需要注意的是避免在函数中使用双引号,因为它们往往会被转义,从而导致错误。

希望这是有用的。