在rmarkdown中显示两个相邻的rCharts NVD3数字

时间:2015-03-13 10:18:21

标签: r nvd3.js r-markdown rcharts

我想用rCharts包显示两个图表,一个在另一个旁边,或多或少像这个链接中显示的两个馅饼:

http://nvd3.org/examples/pie.html

我使用<iframe>有部分解决方案,但解决方案有三个问题:

  1. 具体情况
  2. 包含控件成为一项复杂的任务
  3. 看起来不太好
  4. 最低工作示例:

    ---
    title: "Example"
    output: html_document
    ---
    ```{r rcht, message=FALSE, echo=FALSE, results='asis'}
    library(rCharts)
    df<-data.frame(label=c("One","Two","Three"),valuea=c(1,2,3),othera=c(10,11,12),
    valueb=c(4,5,6),otherb=c(10,11,12),stringsAsFactors = FALSE)
    p1 <- nPlot(valuea~ label, data = df, type = 'pieChart',height = 225, width = 300)
    p2<- nPlot(valueb~ label, data = df, type = 'pieChart',height = 225, width = 300)
    p1$show('inline', include_assets = TRUE, cdn = F)
    p2$show('inline', include_assets = TRUE, cdn = F)
    ```
    ```{r message=FALSE, echo=FALSE}
    p1$save("pie1.html", standalone = TRUE)
    p2$save("pie2.html", standalone = TRUE)
    ```
    <div  align="center"> 
    <font size="10" color="black" face="sans-serif">Both Pies</font><br>
    <p>
    <iframe src="pie1.html" height="400" width="400"></iframe>
    <iframe src="pie2.html" height="400" width="400"></iframe>
    </p>
    <div>
    

    我知道不应该使用饼图,我可以使用多条形图。但是,我想在rCharts包中使用这种类型的布局和其他类型的图表。

    此外,我希望在图表中包含控件,同时它们彼此相邻显示。在$save()函数之前添加以下代码会添加控件:

    ```{r message=FALSE, echo=FALSE} 
    p1$addControls('y','valuea',values=c('valuea','othera'))
    p2$addControls('y','valueb',values=c('valueb','otherb'))
    ```
    

    这个问题与我不太相关,但如果有人有解决方案(最好只有两个图表的一个控件),那就太好了。

    我理解这一切可能对R来说太过分了。感谢任何帮助/建议。

2 个答案:

答案 0 :(得分:1)

不优雅,但功能齐全(我没有尝试使用控件):

---
title: "Example"
output: html_document
---

```{r rcht, message=FALSE, echo=FALSE, results='asis'}
library(rCharts)
library(htmltools)
df <- data.frame(label=c("One","Two","Three"),valuea=c(1,2,3),othera=c(10,11,12),
valueb=c(4,5,6),otherb=c(10,11,12),stringsAsFactors = FALSE)
p1 <- nPlot(valuea~ label, data = df, type = 'pieChart',height = 225, width = 300)
p2 <- nPlot(valueb~ label, data = df, type = 'pieChart',height = 225, width = 300)
```

```{r echo=FALSE, results="asis"}
cat("<table width='100%'><tr style='width:100%'><td width='50%'>")
```

```{r echo=FALSE, results="asis"}
p1$show('inline', include_assets = TRUE, cdn = FALSE)
```

```{r echo=FALSE, results="asis"}
cat("</td><td>")
```

```{r echo=FALSE, results="asis"}
p2$show('inline', include_assets = TRUE, cdn = FALSE)
```

```{r echo=FALSE, results="asis"}
cat("</td></tr></table>")
```

答案 1 :(得分:0)

嗨我在控制器上遇到同样的问题它看起来在R-studio的查看器中一切正常但是当我用Rmarkdown编译它时它根本没有显示该情节。

```{r results = 'asis', comment = NA}
    require(rCharts)
    require(datasets)
p2 <- nPlot(mpg ~ cyl, group = 'wt', 
        data = mtcars, type = 'scatterChart')

p2$xAxis(axisLabel = 'Log2')
p2$yAxis(axisLabel = 'Log2')
p2$chart(tooltipContent = "#! function(key, x, y, e){ 
     return  '<b>Name:</b>  ' + e.point.GeneID
     } !#")
p2$chart(color = c('red', 'green'))
p2$addControls("x", value = 'mpg', values = names(mtcars))
p2$addControls("y", value = 'cyl', values = names(mtcars))
cat('<style>.nvd3{height: 400px;}</style>')
p2$print('chart2', include_assets = TRUE)
```

上面的代码是删除的addControls实际上也在rmarkdown中工作。

此外,如果您尝试在Rstudio控制台中运行上面的代码(仅从p2&lt; -nPlot到cat命令),然后调用p2,我实际上可以看到控件。