a=2+3Introducció a Quarto
Fem un càlcul senzill
i el valor de la variable a és ara 5.
import matplotlib.pyplot as plt
plt.plot([1,2,3],[4,2,1 ])
plt.show()
Fem un càlcul senzill
a=2+3
i el valor de la variable a és ara {r} a. També podem dibuixar
plot(1)
Fem un càlcul senzill
#| echo: false
a=2+3
i el valor de la variable a és ara {r} a.
#| echo: false
hist(rnorm(100))
#| echo: false
#| warning: false
notes<-read.csv2('./data/notes_atenea.csv',sep=",",dec='.')
#recodifiquem la nota a numèric
notes[is.na(notes)] <- 0
notes$P1<-as.numeric(notes$P1Parcial..Real.)
notes$P2<-as.numeric(notes$P2Parcial..Real.)
notes$P3<-as.numeric(notes$P3Parcial..Real.)
notes$P4<-as.numeric(notes$P4Parcial..Real.)
notes$nota<-as.numeric(notes$Total.Parcial..Real.)
Row
Presentats: r sum(!is.na(notes$nota))
Matriculats: r length(notes$nota)
Aprovats: r sum(notes$nota>4.999,na.rm=TRUE)
Row
#| echo: false
#| warning: false
#| title: Nota Total
library(ggplot2)
library(plotly)
library(tidyverse)
p<-notes %>%
ggplot(aes(nota)) +
geom_histogram(bins=10)
ggplotly(p)
Row
#| echo: false
#| warning: false
#| title: Problema 1
library(ggplot2)
library(plotly)
library(tidyverse)
p<-notes %>%
ggplot(aes(P1)) +
geom_histogram(bins=10)
ggplotly(p)
#| echo: false
#| warning: false
#| title: Problema 2
library(ggplot2)
library(plotly)
library(tidyverse)
p<-notes %>%
ggplot(aes(P2)) +
geom_histogram(bins=10)
ggplotly(p)
#| echo: false
#| warning: false
#| title: Problema 3
library(ggplot2)
library(plotly)
library(tidyverse)
p<-notes %>%
ggplot(aes(P3)) +
geom_histogram(bins=10)
ggplotly(p)
#| echo: false
#| warning: false
#| title: Problema 4
library(ggplot2)
library(plotly)
library(tidyverse)
p<-notes %>%
ggplot(aes(P4)) +
geom_histogram(bins=10)
ggplotly(p)
Quarto com a extensió de Markdown
- Modificacions del format md estàndar: ‘xerrada.qmd’
- Amb l’encapçalament definim com es renderitza el document per defecte:
---
title: "Introducció a Quarto"
author: Joaquim Puig
format: html
---
i aleshores quan ho renderitzem crearà ‘xerrada.html’.
quarto render xerrada.qmdo bé de forma integrada a RStudio, VSCode…
Generació de PDF
Generació de PDF/Latex ‘xerrada.pdf’
---
title: "Introducció a Quarto"
author: Joaquim Puig
format: pdf
---
usant PDF/Typst https://typst.app ‘xerrada.pdf’
---
title: "Introducció a Quarto"
author: Joaquim Puig
format: typst
---
Més control sobre LaTeX
A part d’usar format: latex com a opció, també
---
title: "Introducció a Quarto"
author: Joaquim Puig
format:
pdf:
include-in-header:
- text: |
\usepackage{times}
keep-tex: true
---
això ens crearà un fitxer [xerrada.tex](xerrada-latex.tex) que usarà el paquet times per a generar un ‘xerrada.pdf’. Podem També especificar macros, paquets locals, fitxers bibtex…
Generació de PPT/ODT
Per a presentacions, podem usar html a través de RevealJS com aquesta mateixa presentació index.qmd o bé PowerPoint:
---
title: "Introducció a Quarto"
author: Joaquim Puig
format: pptx
---
i ens crearà xerrada.pptx. Les equacions no es visualitzen bé en LibreOffice 😞.
Generació de DOCX/ODT
MS Word: xerrada.docx
---
title: "Introducció a Quarto"
author: Joaquim Puig
format: docx
---
ODT: xerrada.odt
---
title: "Introducció a Quarto"
author: Joaquim Puig
format: odt
---
Templates per a articles
Caldrà que ens instal·lem una extensió per a articles:
$ quarto use template quarto-journals/plosi aleshores podem fer en format plos-docxo bé plos-pdf:
---
title: "PLOS template"
format:
plos-docx:
(...)
Crearà un directori en un projecte amb:
Integració amb codi


Literate Programming (Programació lletrada?)
- Integrar documentació i codi, veieu Wikipedia
- Ja implementat per Knuth (1987) a través de
WEB. - En l’univers R, ja fou desenvoupat per Yihui Xie.
- La meva opinió personal és que els càlculs forts convé fer-los a part de cara a la reproductibilitat i disponibilitat de dades.
- Convé usar l’opció
cache:trueper no haver de tornar a córrer càlculs.
Literate programming: R
calculs-R.qmdexemple senzill.literate-R.qmdexemple per analitzar notes.- En R podem usar directament RStudio.
---
title: "Literate Programming in R"
engine: R
---
- Amb una feina extra ho podem convertir en un dashboard o plafó d’informació, com a
dashboard-R.qmd.
quarto render dashboard-R.qmdLiterate programming: Python
---
title: "Literate programming"
jupyter: python3
---
i fem
quarto render calculs-python.qmdExemples:
Literate programming: Julia
---
title: "Literate Programming in Julia (quarto 1.5)"
engine: julia
---
- Cal que ens instal·lem la versió \(\ge\) 15
- Veieu
literate-julia.qmdque produeix aquest resultat. - Xerrada de Pere Joan Giménez sobre Julia
Literate programming: Observable/JS
Podem aconseguir algun tipus d’interactivitat amb R+htmlwidgets:
- https://web.mat.upc.edu/joaquim.puig/posts/quarto-showcase/
- https://web.mat.upc.edu/joaquim.puig/posts/webexercises-quiz/
- Per a un major control podem usar observable/javascript: https://web.mat.upc.edu/joaquim.puig/posts/quarto-ojs/
- Veieu
literate-ojs.qmd.
El codi és reactiu
El quadrat del número que has posat a sota és ${xx}.
//| echo: false
xx=var_a*var_a
viewof var_a = Inputs.range([-2, 11], {value: 5, step: 1, label: "Insert a value"})
Importar des de cel·les d’ObservableHQ
Gràfiques de Roger Veciana
//| echo: false
import {graph} from "@rveciana/monthly-mean-co-sub-2-sub-concentration-at-mauna-loa"
graph
o dibuixar una cicloide (gràfiques de @mcmcclur)
//| echo: false
import {make_cycloid} from "@mcmcclur/the-cycloid"
cycloid = make_cycloid(r, t)
per als següents valors dels paràmetres
//| echo: false
viewof t = Inputs.range([0, 6 * Math.PI], {value: 1, step: 1, label: "distància"})
viewof r = Inputs.range([0, 2], {value: 1, step: 0.01, label: "radi"})
Més informació
Veieu la xerrada de Roger Veciana
Informe sobre notes d’Atenea
#| echo: true
#| warning: false
notes<-read.csv2('./data/notes_atenea.csv',sep=",",dec='.')
#recodifiquem la nota a numèric
notes[is.na(notes)] <- 0
notes$P1<-as.numeric(notes$P1Parcial..Real.)
notes$P2<-as.numeric(notes$P2Parcial..Real.)
notes$P3<-as.numeric(notes$P3Parcial..Real.)
notes$P4<-as.numeric(notes$P4Parcial..Real.)
notes$nota<-as.numeric(notes$Total.Parcial..Real.)
Nota final
summary(notes)
Entre els r sum(!is.na(notes$nota)) (sobre r length(notes$nota)) presentats hi ha hagut:
r sum(notes$nota>4.999,na.rm=TRUE)aprovatsr sum(notes$nota<4.999,na.rm=TRUE)suspesos, dels qualsr sum(notes$nota<2.999,na.rm=TRUE)alumnes amb nota inferior a 3.
Es poden veure els resultats a la Figura ?@fig-notes
#| echo: true
#| warning: false
#| label: fig-notes
#| fig-cap: "Histograma de les notes"
hist(notes$nota)
a=2+3
i podem dir que el valor de a és {julia} a. També podem dibuixar:
using Plots
plot(cos)
Quarto com a extensió de Markdown
- És un sistema de publicació basat en el llenguatge **Markdown^* (Aaron Swartz et al) (*.qmd)
- Permet exportar a múltiples formats (PDF/Web/Word/Epub/Wiki…), de moment no he trobat suport per
Moodle😞.
Gramàtica de markdown
- El sistema d’equacions és el de TeX: \(\cos{\pi}=-1\) (en línia) o bé \[ \alpha x + \beta y = 0 \tag{1}\]
- També es poden insertar cites de fitxers bibtex i enllaços a equacions com Equation 1.
- Podem també insertar imatges,

Integració amb codi
- Quarto permet insertar codi, que s’executi i s’incorpori l’output o elements interactius.
$ quarto render- Es pot executar a CLI, VSCode, RStudio/Posit…
Arquitectura
- Successor de RMarkdwon (òrbita R). Open Source desenvolupat per Posit.
- Inspirat/Construït: Pandoc, Reveal, Hugo…
Per saber-ne més
- Molt bona documentació a www.posit.com, que podeu trobar aquí.
- Quarto és al mateix temps una extensió del llenguatge markdown i una distribució de paquets que implementa el literate programming de Knuth (1984) a través de les idees originàries del paquet KnitR de R de Yihui Xie (2012).
