2013-09-01 40 views
2

我尝试使用rCharts和polychart前端建立一个图表:手动设置点色+ 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已经解决了问题。

回答

2

虽然我们正在尝试创建更多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对象。只有注意避免在函数内部使用双引号,因为它们往往会被转义并因此导致错误。

希望这是有用的。

+0

首先,谢谢你的回答。但是,我无法调整您的答案(请参阅问题的补充)。另外,在我的rCharts版本中没有toJSON函数,但是有JSON2。 –

+0

它适合我。你能确保你已经安装了最新版本的rCharts。你可以通过使用'devtools :: install_github('rCharts','ramnathv',ref ='dev')' – Ramnath

+1

来实现,而'toJSON'函数来自'RJSONIO'包,你必须直接加载它,如果你在'rCharts'之外使用它。 – Ramnath