3

我正在动态创建几个gvisScatterCharts. 我想定义每条线的颜色,我可以使用系列和颜色属性来完成。没有什么比订单或固定号码更能让我预定义颜色了。所以我想创建一个与我的颜色平行的属性数组,并将其放置在series=myColors.

问题是 gVis 需要这样的字符串:

   series="[{color: 'black', visibleInLegend: false}]", 

一旦我使用paste函数 gVis 创建了一个字符串,就不再接受它们,只是将一个空白页显示为图表。(即使标记“使用\”)

这是一个错误还是我做错了什么?

4

1 回答 1

2

这不是一个错误,正如帮助中所说,它需要一个 JSON 字符串,因此您需要构建 JSON 字符串。

使用RJSONIO您可以使用构建 JSON 选项toJSON

library(googleVis)
library(RJSONIO)
myColor <- 'grey'   ## my dynamic color, here I fix but you can read it ,e.g
                    ## from a chart config file or whatever you want
isLegend <- TRUE    ## a boolean value 

myseriesOptions <- toJSON(list(list(color=myColor),list(visibleInLegend=isLegend)))

例如

Scatter2 <- gvisScatterChart(women, 
                             options=list(legend="none",
                                          lineWidth=2, pointSize=0,
                                          title="Women", vAxis="{title:'weight (lbs)'}",
                                          hAxis="{title:'height (in)'}", 
                                          width=300, height=300,
                                          series = myseriesOptions    ))

 plot(Scatter2)

PS:我们可以fromJSON用来获取要构造的字符串的R形式,例如

fromJSON("{title:'mytitle'}")        ## the ouptut is a list 
$itl
NULL

cat(toJSON(list(title='mytitle')))   ## I construct my list and I use toJSON
                                     ## I get my origin json form

{
 "title": "mytitle" 
}
于 2012-12-29T10:38:04.810 回答