小编Dam*_*ian的帖子

使用Knitr将绘图居中到页面中间

我想将绘图与编织生成的pdf文档的页面中心对齐.我可以使用水平对齐绘图到中心,fig.align='center'但无法弄清楚如何使绘图垂直对齐到中心.

我一直在使用以下代码:

---
header-includes: \usepackage{graphicx}
output: 
  pdf_document
geometry:
  left=1in,right=1in,top=1in,bottom=1in
---


```{r,fig.align='center',out.extra='angle=90', echo=FALSE}

library(ggplot2)
ggplot(diamonds, aes(y=carat, x=price, colour=clarity))+geom_point()+
facet_wrap(~cut)

```
Run Code Online (Sandbox Code Playgroud)

pdf r rstudio knitr

12
推荐指数
1
解决办法
2万
查看次数

控制由R markdown中的ggplot循环生成的每个pdf页面的图形的大小和数量

我想使用R markdown生成一个pdf文档,以显示在for循环中使用ggplot创建的一系列图.是否可以控制每页上的绘图数量,例如,每页有2 X 2的绘图网格?

我想保持灵活性,以便我可以更改图形的总数,以便它在适当数量的页面上分割.

我在下面尝试使用ggplot2和gridExtra包,但我无法控制每页的图形数量,似乎只想将它们压缩到一个sinlge页面.我已经尝试在grid.arrange中更改ncol,nrow,height,width参数但它似乎没有帮助.

    ---
    title: "ggplot Layout"
output: pdf_document
    ---

    ```{r,figure2 fig.height=8, fig.width=6,echo=FALSE,message=FALSE}


    library(ggplot2)
    library(gridExtra) 

    graphlist<-list()
    count <- 1
    colnums<-c(1,5,6,7,8,9,10)

    for (i in colnums) {
    plot.x.name<-names(diamonds[i])
    p <- ggplot(data=diamonds,aes_string(x = plot.x.name)) + geom_histogram() 
    graphlist[[count]]<-p
    count <- count+1

    }

    do.call("grid.arrange",c(graphlist,ncol=2))



    ```
Run Code Online (Sandbox Code Playgroud)

我正在寻找的东西的类型由此代码(改编自http://kbroman.github.io/knitr_knutshell/pages/figs_tables.html)证明 ,但不幸的是,这不适用于ggplot.

---
title: "Example Layout"
output: pdf_document
---


```{r bunch_o_figs,fig.height=8, fig.width=6, message=FALSE,echo=FALSE}
n <- 100
x <- rnorm(n)
par(mfrow=c(2,2), las=1)
for(i in 1:20) {
  y <- i*x + rnorm(n)
  plot(x, y, main=i) …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 pandoc knitr gridextra

4
推荐指数
1
解决办法
4038
查看次数

匹配 switch 语句中的字符串

我想使用 switch 语句根据字符串的前两个字符进行分支。在下面显示的示例中,我想用“aabb”或“aacc”返回“Apple”

test<-c("aabb", "aacc", "bbbb")

foo <- Vectorize(function(a) {
      switch(as.character(a),
            "^aa" = "Apple",
            "bbbb" = "Grape",
            "Unknown")

}, "a")

> foo(test)
aabb      aacc      bbbb 
"Unknown" "Unknown"   "Grape" 
Run Code Online (Sandbox Code Playgroud)

如果存在完全匹配,我可以使语句起作用,但我无法弄清楚如何仅使用前两个字符来获得匹配。也许有一种使用正则表达式的方法?如图所示,我尝试使用 ^来匹配字符串的开头(与 一起使用grep),但它不起作用。

我想我可以使用嵌套ifelse语句 withgrepl但它可以使用switch?

string r switch-statement

2
推荐指数
1
解决办法
212
查看次数

标签 统计

r ×3

knitr ×2

ggplot2 ×1

gridextra ×1

pandoc ×1

pdf ×1

rstudio ×1

string ×1

switch-statement ×1