如何摆脱用 DiagrammeR 制作并编织成 pdf 的流程图下方的白色 space?
How to get rid of white space beneath flowchart made with DiagrammeR and knitted to pdf?
我想做的是在我的 R Markdown 文件的代码块中使用 DiagrammeR 创建一个基本流程图,并使其可引用(如果可能的话,就像我对我的 ggplot2 图形所做的那样 -> fig.cap = " " 在代码块 header).
到目前为止我的代码:
```{r flowchart-ablauf, fig.cap = "Ablauf der Datenverarbeitung", fig.align = 'right', echo = FALSE}
DiagrammeR::grViz(diagram = "
digraph rmarkdown {
graph [nodesep = 1.5, ranksep = 1.5]
node [shape = box, fontname = Helvetica, fontsize = 80, penwidth = 6, fixedsize = true, width = 16.5, height = 3]
'Verbrauchsdaten von der\nSpitalpharmazie (Excel-Tabelle)'; 'Belegzahlen vom Ressort\nFinanzen (Excel-Tabelle)';
node [shape = box, fontname = Helvetica, fontsize = 80, penwidth = 6, fixedsize = true, width = 20.5, height = 3]
'Import der Daten aus Excel ins\nMicrosoft Access (Datenbanksoftware)'; 'Zusammenführen der Informationen und\nerstellen neuer, berechneter Tabellen';
'Export der neu erstellten Tabellen\nin Form von Excel-Tabellen'; 'Berechnung und grafische Darstellung\nder Grafiken und Tabellen'
node [shape = box, fontname = Helvetica, fontsize = 80, penwidth = 6, fixedsize = true, width = 20.5, height = 2]
'Import der neuen Tabellen in R';
#Pfeile
edge [arrowhead = vee, arrowsize = 4, penwidth = 6]
'Verbrauchsdaten von der\nSpitalpharmazie (Excel-Tabelle)' -> 'Import der Daten aus Excel ins\nMicrosoft Access (Datenbanksoftware)';
'Belegzahlen vom Ressort\nFinanzen (Excel-Tabelle)' -> 'Import der Daten aus Excel ins\nMicrosoft Access (Datenbanksoftware)';
'Import der Daten aus Excel ins\nMicrosoft Access (Datenbanksoftware)' -> 'Zusammenführen der Informationen und\nerstellen neuer, berechneter Tabellen';
'Zusammenführen der Informationen und\nerstellen neuer, berechneter Tabellen' -> 'Export der neu erstellten Tabellen\nin Form von Excel-Tabellen'
'Export der neu erstellten Tabellen\nin Form von Excel-Tabellen' -> 'Import der neuen Tabellen in R'
'Import der neuen Tabellen in R' -> 'Berechnung und grafische Darstellung\nder Grafiken und Tabellen'
}
")
```
编织成 pdf 后的样子:
我有几个问题:
- 为什么我必须将字体设置得如此之大才能使其易于阅读?我的意思是它是 80,它仍然小于在 yaml header?!
中设置为 11pt 的文本字体大小
- 为什么 "fig. align = 'right'" 什么也没做?
- 最重要的是:如何去除流程图下方(流程图和图标题之间)的巨大白色space?
这就是我的代码最终的样子:
---
header-includes:
- \usepackage{wrapfig}
- \usepackage{lipsum}
output:
pdf_document:
keep_tex: true
---
```{r, include = F}
defOut <- knitr::knit_hooks$get("plot") # save the default plot hook
knitr::knit_hooks$set(plot = function(x, options) { # set new plot hook ...
x <- defOut(x, options) # first apply the default hook
if(!is.null(options$wrapfigure)) { # then, if option wrapfigure is given ...
# create the new opening string for the wrapfigure environment ...
wf <- sprintf("\begin{wrapfigure}{%s}{%g\textwidth}", options$wrapfigure[[1]], options$wrapfigure[[2]])
x <- gsub("\begin{figure}", wf, x, fixed = T) # and replace the default one with it.
x <- gsub("{figure}", "{wrapfigure}", x, fixed = T) # also replace the environment ending
}
return(x)
})
```
```{r flowchart-ablauf, echo = F, fig.cap = "Ablauf der Datenverarbeitung", fig.align = 'right', out.extra = 'trim = {5cm 6.5cm 12.5cm 4cm}', out.width=".5\textwidth", wrapfigure = list("R", .5)}
DiagrammeR::grViz(diagram = "
digraph rmarkdown {
graph [nodesep = 1.5, ranksep = 1.5]
node [style = filled, fillcolor = Gray90, shape = box, fontname = Helvetica, fontsize = 80, penwidth = 6, fixedsize = true, width = 16.5, height = 3]
'Verbrauchsdaten von der\nSpitalpharmazie (Excel-Tabelle)'; 'Belegzahlen vom Ressort\nFinanzen (Excel-Tabelle)';
node [shape = box, fontname = Helvetica, fontsize = 80, penwidth = 6, fixedsize = true, width = 20.5, height = 3]
'Import der Daten aus Excel ins\nMicrosoft Access (Datenbanksoftware)'; 'Zusammenführen der Informationen und\nerstellen neuer, berechneter Tabellen';
'Export der neu erstellten Tabellen\nin Form von Excel-Tabellen'; 'Berechnung und grafische Darstellung\nder Grafiken und Tabellen'
node [shape = box, fontname = Helvetica, fontsize = 80, penwidth = 6, fixedsize = true, width = 20.5, height = 2]
'Import der neuen Tabellen in R';
#Pfeile
edge [arrowhead = vee, arrowsize = 4, penwidth = 6]
'Verbrauchsdaten von der\nSpitalpharmazie (Excel-Tabelle)' -> 'Import der Daten aus Excel ins\nMicrosoft Access (Datenbanksoftware)';
'Belegzahlen vom Ressort\nFinanzen (Excel-Tabelle)' -> 'Import der Daten aus Excel ins\nMicrosoft Access (Datenbanksoftware)';
'Import der Daten aus Excel ins\nMicrosoft Access (Datenbanksoftware)' -> 'Zusammenführen der Informationen und\nerstellen neuer, berechneter Tabellen';
'Zusammenführen der Informationen und\nerstellen neuer, berechneter Tabellen' -> 'Export der neu erstellten Tabellen\nin Form von Excel-Tabellen'
'Export der neu erstellten Tabellen\nin Form von Excel-Tabellen' -> 'Import der neuen Tabellen in R'
'Import der neuen Tabellen in R' -> 'Berechnung und grafische Darstellung\nder Grafiken und Tabellen'
}
")
```
我想做的是在我的 R Markdown 文件的代码块中使用 DiagrammeR 创建一个基本流程图,并使其可引用(如果可能的话,就像我对我的 ggplot2 图形所做的那样 -> fig.cap = " " 在代码块 header).
到目前为止我的代码:
```{r flowchart-ablauf, fig.cap = "Ablauf der Datenverarbeitung", fig.align = 'right', echo = FALSE}
DiagrammeR::grViz(diagram = "
digraph rmarkdown {
graph [nodesep = 1.5, ranksep = 1.5]
node [shape = box, fontname = Helvetica, fontsize = 80, penwidth = 6, fixedsize = true, width = 16.5, height = 3]
'Verbrauchsdaten von der\nSpitalpharmazie (Excel-Tabelle)'; 'Belegzahlen vom Ressort\nFinanzen (Excel-Tabelle)';
node [shape = box, fontname = Helvetica, fontsize = 80, penwidth = 6, fixedsize = true, width = 20.5, height = 3]
'Import der Daten aus Excel ins\nMicrosoft Access (Datenbanksoftware)'; 'Zusammenführen der Informationen und\nerstellen neuer, berechneter Tabellen';
'Export der neu erstellten Tabellen\nin Form von Excel-Tabellen'; 'Berechnung und grafische Darstellung\nder Grafiken und Tabellen'
node [shape = box, fontname = Helvetica, fontsize = 80, penwidth = 6, fixedsize = true, width = 20.5, height = 2]
'Import der neuen Tabellen in R';
#Pfeile
edge [arrowhead = vee, arrowsize = 4, penwidth = 6]
'Verbrauchsdaten von der\nSpitalpharmazie (Excel-Tabelle)' -> 'Import der Daten aus Excel ins\nMicrosoft Access (Datenbanksoftware)';
'Belegzahlen vom Ressort\nFinanzen (Excel-Tabelle)' -> 'Import der Daten aus Excel ins\nMicrosoft Access (Datenbanksoftware)';
'Import der Daten aus Excel ins\nMicrosoft Access (Datenbanksoftware)' -> 'Zusammenführen der Informationen und\nerstellen neuer, berechneter Tabellen';
'Zusammenführen der Informationen und\nerstellen neuer, berechneter Tabellen' -> 'Export der neu erstellten Tabellen\nin Form von Excel-Tabellen'
'Export der neu erstellten Tabellen\nin Form von Excel-Tabellen' -> 'Import der neuen Tabellen in R'
'Import der neuen Tabellen in R' -> 'Berechnung und grafische Darstellung\nder Grafiken und Tabellen'
}
")
```
编织成 pdf 后的样子:
我有几个问题:
- 为什么我必须将字体设置得如此之大才能使其易于阅读?我的意思是它是 80,它仍然小于在 yaml header?! 中设置为 11pt 的文本字体大小
- 为什么 "fig. align = 'right'" 什么也没做?
- 最重要的是:如何去除流程图下方(流程图和图标题之间)的巨大白色space?
这就是我的代码最终的样子:
---
header-includes:
- \usepackage{wrapfig}
- \usepackage{lipsum}
output:
pdf_document:
keep_tex: true
---
```{r, include = F}
defOut <- knitr::knit_hooks$get("plot") # save the default plot hook
knitr::knit_hooks$set(plot = function(x, options) { # set new plot hook ...
x <- defOut(x, options) # first apply the default hook
if(!is.null(options$wrapfigure)) { # then, if option wrapfigure is given ...
# create the new opening string for the wrapfigure environment ...
wf <- sprintf("\begin{wrapfigure}{%s}{%g\textwidth}", options$wrapfigure[[1]], options$wrapfigure[[2]])
x <- gsub("\begin{figure}", wf, x, fixed = T) # and replace the default one with it.
x <- gsub("{figure}", "{wrapfigure}", x, fixed = T) # also replace the environment ending
}
return(x)
})
```
```{r flowchart-ablauf, echo = F, fig.cap = "Ablauf der Datenverarbeitung", fig.align = 'right', out.extra = 'trim = {5cm 6.5cm 12.5cm 4cm}', out.width=".5\textwidth", wrapfigure = list("R", .5)}
DiagrammeR::grViz(diagram = "
digraph rmarkdown {
graph [nodesep = 1.5, ranksep = 1.5]
node [style = filled, fillcolor = Gray90, shape = box, fontname = Helvetica, fontsize = 80, penwidth = 6, fixedsize = true, width = 16.5, height = 3]
'Verbrauchsdaten von der\nSpitalpharmazie (Excel-Tabelle)'; 'Belegzahlen vom Ressort\nFinanzen (Excel-Tabelle)';
node [shape = box, fontname = Helvetica, fontsize = 80, penwidth = 6, fixedsize = true, width = 20.5, height = 3]
'Import der Daten aus Excel ins\nMicrosoft Access (Datenbanksoftware)'; 'Zusammenführen der Informationen und\nerstellen neuer, berechneter Tabellen';
'Export der neu erstellten Tabellen\nin Form von Excel-Tabellen'; 'Berechnung und grafische Darstellung\nder Grafiken und Tabellen'
node [shape = box, fontname = Helvetica, fontsize = 80, penwidth = 6, fixedsize = true, width = 20.5, height = 2]
'Import der neuen Tabellen in R';
#Pfeile
edge [arrowhead = vee, arrowsize = 4, penwidth = 6]
'Verbrauchsdaten von der\nSpitalpharmazie (Excel-Tabelle)' -> 'Import der Daten aus Excel ins\nMicrosoft Access (Datenbanksoftware)';
'Belegzahlen vom Ressort\nFinanzen (Excel-Tabelle)' -> 'Import der Daten aus Excel ins\nMicrosoft Access (Datenbanksoftware)';
'Import der Daten aus Excel ins\nMicrosoft Access (Datenbanksoftware)' -> 'Zusammenführen der Informationen und\nerstellen neuer, berechneter Tabellen';
'Zusammenführen der Informationen und\nerstellen neuer, berechneter Tabellen' -> 'Export der neu erstellten Tabellen\nin Form von Excel-Tabellen'
'Export der neu erstellten Tabellen\nin Form von Excel-Tabellen' -> 'Import der neuen Tabellen in R'
'Import der neuen Tabellen in R' -> 'Berechnung und grafische Darstellung\nder Grafiken und Tabellen'
}
")
```