J'ai créé un organigramme avec R que j'ai inclus dans mon fichier R Markdown.
À quoi il ressemble maintenant:
Le code:
```{r flowchart-data, echo = FALSE, message = FALSE, fig.cap = "Ablauf der Datenverarbeitung", fig.align = "right", fig.width = 7, fig.height = 6, out.extra = 'trim = {0 1.1cm 0 0}, clip', out.width=".7\\textwidth"} library(grid) library(Gmisc) # grid.newpage() # set some parameters to use repeatedly leftx <- .2 midx <- .5 rightx <- .8 myBoxGrob <- function(text, ...) { boxGrob(label = text, bjust = "top", box_gp = gpar(fill = "lightgrey"), ...) } # create boxes (Pharmazie <- myBoxGrob("Verbrauchsdaten von der\n Spitalpharmazie (Excel-Tabelle)", x=leftx, y=1, width = 0.36)) (Finanzen <- myBoxGrob("Belegzahlen vom Ressort\n Finanzen (Excel-Tabelle)", x=rightx, y=1, width = 0.36)) (A <- myBoxGrob("Import der Daten aus Excel ins\n Microsoft Access (Datenbanksoftware)", x=midx, y=0.83, width = 0.45)) (B <- myBoxGrob("Zusammenführen der Informationen\n und erstellen neuer, berechneter Tabellen", x=midx, y=.66, width = 0.45)) (C <- myBoxGrob("Export der neu erstellten Tabellen\n in Form von Excel-Tabellen", x=midx, y=.49, width = 0.45)) (D <- myBoxGrob("Import der neuen Tabellen in R", x=midx, y=.32, width = 0.45)) (E <- myBoxGrob("Berechnung und grafische Darstellung\n der Grafiken und Tabellen", x=midx, y=.19, width = 0.45)) connectGrob(Pharmazie, A, "L") connectGrob(Finanzen, A, "L") connectGrob(A, B, "N") connectGrob(B, C, "N") connectGrob(C, D, "N") connectGrob(D, E, "N") ```
Ce que je voudrais:
Comment puis-je réaliser ces choses?
EDIT 1: Je veux tricoter en pdf.
EDIT 2: Comme demandé dans les commentaires, comment ma page regarde maintenant:
3 Réponses :
Pour autant que je sache, vous pouvez intégrer du code HTML dans un document de démarquage, donc si vous tricotez en HTML, vous pouvez faire quelque chose comme ceci:
Enveloppez la cellule avec un div
balise avec le style d'alignement que vous souhaitez (plus besoin d'aligner la cellule), et comme pour la légende, vous pouvez ajouter une boîte transparente en bas avec la légende comme texte à l'intérieur
<div style="float:right"> ```{r flowchart-data, echo = FALSE, message = FALSE, fig.width = 7, fig.height = 6} library(grid) library(Gmisc) grid.newpage() # set some parameters to use repeatedly leftx <- .2 midx <- .5 rightx <- .8 myBoxGrob <- function(text, ...) { boxGrob(label = text, bjust = "top", box_gp = gpar(fill = "lightgrey"), ...) } # create boxes (Pharmazie <- myBoxGrob("Verbrauchsdaten von der\n Spitalpharmazie (Excel-Tabelle)", x=leftx, y=1, width = 0.36)) (Finanzen <- myBoxGrob("Belegzahlen vom Ressort\n Finanzen (Excel-Tabelle)", x=rightx, y=1, width = 0.36)) (A <- myBoxGrob("Import der Daten aus Excel ins\n Microsoft Access (Datenbanksoftware)", x=midx, y=0.83, width = 0.45)) (B <- myBoxGrob("Zusammenführen der Informationen\n und erstellen neuer, berechneter Tabellen", x=midx, y=.66, width = 0.45)) (C <- myBoxGrob("Export der neu erstellten Tabellen\n in Form von Excel-Tabellen", x=midx, y=.49, width = 0.45)) (D <- myBoxGrob("Import der neuen Tabellen in R", x=midx, y=.32, width = 0.45)) (E <- myBoxGrob("Berechnung und grafische Darstellung\n der Grafiken und Tabellen", x=midx, y=.19, width = 0.45)) (caption <- boxGrob(label = 'Ablauf der Datenverarbeitung', x=midx, y=.02, box_gp = gpar(alpha=0))) connectGrob(Pharmazie, A, "L") connectGrob(Finanzen, A, "L") connectGrob(A, B, "N") connectGrob(B, C, "N") connectGrob(C, D, "N") connectGrob(D, E, "N") ``` </div> And this is the text that would go to the left of the chart.
Je suis désolé, j'aurais dû préciser, je tricote en pdf. J'ai trouvé cette solution et je l'ai essayée, mais cela ne fonctionne pas lors du tricotage en pdf, malheureusement.
Il existe une option chunk appelée fig.env
avec laquelle on peut passer de l'environnement figure
à l'environnement marginfigure
.
Malheureusement, la liste des environnements possibles n'inclut pas wrapfigure
. Par conséquent, nous allons modifier le bloc de l'intrigue:
--- 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) }) ``` Vivamus vehicula leo a justo. Quisque nec augue. Morbi mauris wisi, aliquet vitae, dignissim eget, sollicitudin molestie, ligula. In dictum enim sit amet risus. Curabitur vitae velit eu diam rhoncus hendrerit. Vivamus ut elit. Praesent mattis ipsum quis turpis. Curabitur rhoncus neque eu dui. Etiam vitae magna. Nam ullamcorper. Praesent interdum bibendum magna. Quisque auctor aliquam dolor. Morbi eu lorem et est porttitor fermentum. Nunc egestas arcu at tortor varius viverra. Fusce eu nulla ut nulla interdum consectetuer. Vestibulum gravida. ```{r echo = F, warning = F, message = F, fig.width=7, fig.height = 6, out.width = ".7\\textwidth", fig.cap = "My Flowchart", fig.align="right", wrapfigure = list("R", .7)} plot(mpg ~ hp, data = mtcars) ``` Morbi mattis libero sed est. Vivamus vehicula leo a justo. Quisque nec augue. Morbi mauris wisi, aliquet vitae, dignissim eget, sollicitudin molestie, ligula. In dictum enim sit amet risus. Curabitur vitae velit eu diam rhoncus hendrerit. Vivamus ut elit. Praesent mattis ipsum quis turpis. Curabitur rhoncus neque eu dui. Etiam vitae magna. Nam ullamcorper. Praesent interdum bibendum magna. Quisque auctor aliquam dolor. Morbi eu lorem et est porttitor fermentum. Nunc egestas arcu at tortor varius viverra. Fusce eu nulla ut nulla interdum consectetuer. Vestibulum gravida. Morbi mattis libero sed est.
Les commentaires devraient clarifier ce que nous faisons réellement ici. Notez que la valeur attendue de wrapfigure
est une liste de deux éléments. Le premier dit à LaTeX de déplacer la figure de chaque côté de la page. Le deuxième élément indique à LaTeX la largeur de la figure enveloppée. Pour déplacer une figure d'une largeur de 0,7 \\ textwidth
vers la droite, définissez wrapfigure = list ("R", 0.7)
(comme vous l'avez peut-être deviné, L
le déplace vers la gauche).
Tout ce que nous avons à faire maintenant est d'inclure le package wrapfig
dans le YAML et de définir cette option de bloc. Voici un exemple reproductible:
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) })
Notez que cette solution ne fonctionne très probablement qu'avec un bloc créant un seul tracé. Cela devrait être possible dans la mesure où à un bloc contenant plusieurs chiffres.
Je rencontre un problème où les environnements de figures entrent en collision dans mon document. Dois-je ajouter \ end {wrapfigure}
pour éviter cela? J'ai essayé ça et ça n'a pas marché.
Message d'erreur: Package wrapfig Avertissement: Collision entre les environnements d'emballage sur la ligne d'entrée 245.
Je pense que cela peut avoir à voir avec les en-têtes de section et la quantité de texte entourant les tracés mais idk. Merci pour toute aide!
J'ai eu beaucoup de mal avec ça aussi, mais pour la sortie html. Il y a un argument au bloc r qui a résolu le problème pour moi:
out.extra = 'style = "float: right; padding: 10px"'
À quoi ressemble le document après avoir appliqué cette suggestion?
J'ai ajouté une photo de son apparence maintenant. Puisque je tricote en pdf et non en html, je ne peux que vous donner l'exemple.
Excellente suggestion. Avez-vous des sources recommandées pour des commandes de style HTML supplémentaires et compatibles?
Parfait, merci de m'avoir présenté out.extra !!! À propos, l'ajout d'une division de compensation aide à garder le flotteur organisé.