Display two rCharts NVD3 figures next to each other in rmarkdown

拈花ヽ惹草 提交于 2019-12-12 01:53:33

问题


I want to display two charts with the rCharts package, one next to the other, more or less like the two pies are displayed in this link:

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

I have a partial solution using <iframe>, but the solution has three problems:

  1. It is too case specific
  2. Including controls becomes a complicated task
  3. It does not look too nice

Minimum working example:

---
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>

I know pie charts should not be used and that I could use a multi-bar chart. However, I want to use this type of layout with other kinds of charts in the rCharts package.

Additionally, I would like to include controls in the charts whilst they are shown next to each other. Including the following code before the $save() function adds the controls:

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

This issue is less relevant to me, but if someone has a solution (preferably with only one control for both charts), it would be great.

I understand all this might be too much to handle from R. Any help/advice is appreciated.


回答1:


Not elegant, but functional (I did not try it with controls):

---
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>")
```



回答2:


Hi I am having the same problem with controls it looks that in the viewer of R-studio everything works fine but not when I compile with Rmarkdown it doesn't show the plot at all.

```{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)
```

The code above is the addControls are removed actually works also in the rmarkdown.

Also, if you try to run the code above in Rstudio console (just from p2<-nPlot to cat command) and then calling p2 I can actually see the controls.



来源:https://stackoverflow.com/questions/29029718/display-two-rcharts-nvd3-figures-next-to-each-other-in-rmarkdown

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!