我尝试使用 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's answer之后我尝试执行以下操作,但得到一个空页面:
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已经解决了问题。
最佳答案
目前,这在 Polychart 中有点复杂,尽管我们正在尝试创建一个更加 R 友好的解决方案。但目前,这是在 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 对象。唯一需要注意的是避免在函数内使用双引号,因为它们往往会被转义并因此导致错误。
希望这有用。
关于r - 在 rCharts + polychart 中手动设置点颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18558473/