Pàgines

Es mostren els missatges amb l'etiqueta de comentaris datatool. Mostrar tots els missatges
Es mostren els missatges amb l'etiqueta de comentaris datatool. Mostrar tots els missatges

dilluns, 5 d’agost del 2013

Gràfics de barres amb datatool

datatool és un paquet que permet visualitzar dades a més de gestionar-les (2)

A l’article Gràfics de sectors circulars amb datatool vam veure com representar dades en gràfics de sectors. En el present article veurem com fer-ho en gràfics de barres.

El paquet databar del conjunt datatool permet generar gràfics de barres verticals o horitzontals a partir de les dades d’un fitxer extern en format CSV. Es tracta d’un paquet amb força opcions i comandaments que permeten personalitzar els gràfics obtinguts de manera que representin perfectament les nostres dades.

El paquet es crida al preàmbul del document:
\usepackage[%gray, % no posa colors
%horizontal % Crea gràfics horitzontals
]{databar}
Com que es tracta de gestionar i representar les dades d’un fitxer extern (poblacio.csv en el nostre exemple) abans de res hem de crear una base de dades que també hem anomenant poblacio:
%crea la base de dades 'poblacio' a partir del fitxer extern CSV:
\DTLloaddb{poblacio}{poblacio.csv}
Ara ja podem generar el gràfic amb el comandament \DTLbarchart amb les opcions desitjades:
\DTLbarchart{variable=\poblacio,% % defineix la variable sobre la que crea el gràfic
axes=both,% % mostra els 2 eixos (pot ser també none, x o y
ylabel={Població en milions de persones},% % etiqueta dels valors de l'eix Y
upperbarlabel={\poblacio},% % etiqueta amb el valor sobre la barra
verticalbars=true,% % barres verticals
barlabel=\continent,% % etiquetes de les barres
}
{poblacio}{\poblacio=Poblacio,\continent=Continent}
El paquet, però, permet representar no una sola variable sinó més d’una emprant aleshores el comandament \DTLmultibarchart i definint les variables que volem representar:
\DTLmultibarchart{variables={\poblacio,\esperanca},% representarem 2 variables
axes=both,% % mostra els 2 eixos (pot ser també none, x o y
ylabel={Població en milions de persones i esperança de vida en anys},% % etiqueta eix Y
verticalbars=true,% % barres verticals
barwidth=15pt,% % amplada de les barres en punts
uppermultibarlabels={\poblacio,\esperanca},% posa el valor al capdamunt de la barra
barlabel={\continent}% % etiqueta eix X
}%
{poblacio}{\poblacio=Poblacio,\continent=Continent,\esperanca=Esperanca}
Podeu veure el resultat al fitxer PDF adjunt així com estudiar les dades en el document poblacio.csv i el codi al document tex font.

Publicat per primera vegada el dimarts 17 de juliol de 2012.

Gràfics de sectors circulars amb datatool

datatool és un paquet que permet visualitzar dades a més de gestionar-les

A l’article Personalitzar documents amb datatool vam veure com podíem utilitzar el paquet datatool per gestionar dades carregades des d’un fitxer CSV extern a LaTeX. En aquest ocasió veurem com amb el paquet datapie de la suite datatool podem representar aquestes dades en forma de gràfic de sectors circulars.

Com en altres casos necessitem un fitxer extern amb dades i en format CSV (valors separats per comes) que utilitzarà datapie per representar-les. La primera fila correspon a la definició de les columnes i ens servirà per identificar cada camp.

Al preàmbul cridem el paquet datapie amb les possibles opcions:
\usepackage[%gray, %no posa colors
%rotateinner, %rota etiquetes internes segons el radi.
%rotateouter, %rota etiquetes externes segons el radi.
]{datapie}
Al cos del document carreguem el fitxer de dades i en fem una base de dades. En aquest exemple, com que volem representar la població humana que viu a cada continent, tenim:
\DTLloaddb{poblacio}{poblacio.csv}
on poblacio.csv és el fitxer extern amb les dades i poblacio la BD que es crearà.

Per crear el gràfic s’utilitza el comandament
\DTLpiechart{variable,opcions}{BD}{macros} 
propi de paquet datapie. Aquest comandament admet diferents opcions, per exemple:
\DTLpiechart{variable=\poblacio,% variable sobre la que es crea el gràfic
radius=3.5cm, % radi del gràfic
cutaway={1}, % per separar el sector 1 de la resta
%cutaway={1,2,3}, % per separar els sectors 1, 2 i 3
innerlabel={\DTLpiepercent\%}, % etiqueta interna en percentatge
outerlabel={\continent\ (\DTLpievariable)}, % etiqueta externa amb el valor de "nom"
%rotateinner, % gira els valors interiors
%rotateouter, % gira els valors exteriors
}{poblacio}{\continent=Continent,\poblacio=Poblacio}
El paquet admet força possibilitats de formatació del gràfic, com ara la possibilitat de separar-ne algun sector (com a l’exemple amb l’opció cutaway={1}), formatar el tipus de lletra de les etiquetes:
%canvia la família del tipus de lletra de les etiquetes
\renewcommand*{\DTLdisplayinnerlabel}[1]{\textsf{#1}} %internes
\renewcommand*{\DTLdisplayouterlabel}[1]{\textsf{#1}} %externes
resseguir els sectors amb una línia de color:
%dibuixa una línia al voltant dels segments
\renewcommand{\DTLpieoutlinecolor}{black!20} %color de la línia (per defecte negre)
\setlength{\DTLpieoutlinewidth}{.5pt} %gruix de la línia: 0.5pt
o determinar els colors de cada sector manualment:
% canvia l'ordre dels colors dels segments
\DTLsetpiesegmentcolor{1}{yellow!20}
\DTLsetpiesegmentcolor{2}{OliveGreen!20}
Al document tex adjunt es pot estudiar el codi al fitxer tex font que s'ha emprat per representar les dades del fitxer poblacio.csv i es pot veure el resultat al fitxer PDF.

Publicat per per primer cop el dissabte 14 de juliol de 2012.

Personalitzar documents amb datatool

Una manera fàcil de combinar correspondència

Ja vam parlar en l’article Combinar i personalitzar correspondència amb KOMA-Script sobre com crear cartes personalitzades amb el paquet scrltr2 del conjunt KOMA-Script . En aquesta ocasió, però, veurem com personalitzar documents de tota mena amb el concurs del potent paquet datatool.

 datatool és capaç de crear una base de dades a partir d’un fitxer CSV, un fitxer de text on els valors estan separats per comes. En un fitxer CSV ben formatat la primera fila conté el nom dels camps separats per comes i cada fila subsegüent és un registre amb els diferents camps.  datatool aleshores importa les dades del CSV i hi treballa amb tota la potència d’una base de dades. La detallada documentació del paquet informa que és capaç de gestionar una base de dades, de crear gràfics circulars, lineals o de barres i de personalitzar documentació.

En aquest article ens centrarem en aquest darrer aspecte i per estudiar el cas hem creat un document d’ajuda al professorat que en la primera part li proporciona informació global sobre les qualificacions dels estudiants en conjunt tot calculant diferents mitjanes de notes. La segona part del document són els butlletins de qualificació a lliurar a cada estudiant. Són pàgines independents personalitzades amb el nom de cada estudiant i llurs qualificacions amb indicació de la mitjana.

Per aconseguir-ho partim d’un fitxer en format CSV (dades.csv) amb els següents camps: Nom, Cognom1, Cognom2, Genere, Dni, Email, Assignatura1, Assignatura2, Assignatura3. Aquest fitxer dades.csv s’importa al document en forma de la base de dades anomenada estudiants amb el comandament
\DTLloaddb{estudiants}{dades.csv}
El comandament que fa la màgia és
\DTLforeach{nombasedades}{assignacions}{text} 
perquè per cada registre, cada fila de la base de dades nombasedades primer fa una assignació de camps a macros per, en acabat, usar aquestes macros al text. Vegem-ne un exemple:
\DTLforeach{estudiants}{%
\cognomP=Cognom1,\cognomS=Cognom2,\nom=Nom}{%
\cognomP\\%
\cognomS\\%
\nom}
Aquest comandament agafa cada fila, cada registre de la base de dades estudiants, i assigna cada camp a una macro (a la macro \cognomP li assigna el camp Cognom1, per exemple). Aleshores escriu un a sota de l’altre el contingut de les macros amb el contingut dels camps.

Basant-nos amb aquestes iteracions podem fer que una acció es repeteixi per cada registre obtenint així i amb un sol document font tants documents finals com registres tingui el fitxer de dades. Això és el que permet crear tants documents personalitzats com persones tinguem a la llista. El codi simplificat és el següent:
\DTLforeach{estudiants}{%
\nom=Nom,\cognomP=Cognom1,\cognomS=Cognom2,\asA=Assignatura1,\asB=Assignatura2,\asC=Assignatura3,\mitj=Mitjana% }{%
\vspace*{2cm}%
Comunicació de qualificacions\par
\vspace{3cm}
D'acord amb les dades dipositades en aquesta institució,\\%
en/na \textbf{\nom\ \cognomP\ \cognomS} amb DNI \dni ha obtingut aquestes qualificacions:\par
\begin{tabular}{ccc}
\bfseries Assignatura 1 & \bfseries Assignatura 2 & \bfseries Assignatura 3\\
\asA & \asB & \asC
\end{tabular}\par
resultant una nota mitjana de \DTLround{\mitj}{\mitj}{2}\mitj \par
\vspace{7cm}
Barcelona, \today \par
\newpage}
}
Observeu que primer es fa l’assignació a macros del contingut dels camps (p.ex: \nom=Nom)i després s’escriuen les dades personals i es crea una taula on es representen les qualificacions i, finalment s’escriu la mitjana arrodonida que també calcula un comandament del paquet datatool.

Fixeu-vos que dins la iteració hi ha el comandament \newpage que és el que fa que cada cop que s’acaba un registre es generi una pàgina nova on posar les dades del registre següent.

Val la pena estudiar el document tex font adjunt a l’article per veure les diferents possibilitats amb què podem treballar. També és interessant observar el PDF que en resulta on a les dues primeres pàgines hi ha la informació pel professorat i la resta del document serien els butlletins de qualificacions a repartir als estudiants.


catalatex_logo.png
Visualització Baixa






dades.csv
Baixa






mailmerge.pdf
Visualització Baixa






mailmerge.tex
Baixa





Publicat per primera vegada el dissabte 7 de juliol de 2012.