Pàgines

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

diumenge, 22 de novembre del 2015

Línies de temps amb tikz

Moltes vegades hem d'incloure als nostres documents línies de temps on marcar la progressió d'una sèrie d'accions o els punts més destacats del calendari d'un projecte. Amb tikz i la bilbioteca timeline podem aconseguir unes línies de temps flexibles, personalitzables i molt aclaridores.

Aquesta biblioteca per defecte crea línies de temps amb un nombre deteminat de setmanes, però podem personalitzar-les a qualsevol altre període de temps simplement canviant el valor de la variable timespan={Dia}.

També permet definir 2 variables:

Les fases, consisteixen en cercles acolorits que se situen al llarg de la línia de temps.
\phase{between week=n and (n+1) in despl,involvement degree=rcm,phase color=blue}
on
despl= desplaçament: 0.5 just al mig de les dues setmanes, 0 cap a l'esquerra, 1 a la dreta
r= radi de la fase en cm.
Per exemple: \phase{between week=1 and 2 in 0.5,involvement degree=3cm}

El centre de les fases es pot desplaçar entre un valor i l'altre amb un offset de 0 a 1, i si el volem just al mig posem 0.5 com a l'exemple.

Les fites (milestones) són les etiquetes que podem posar sobre o sota les fases per aclarir-ne el significat:
\addmilestone{at=phase-N.g,direction=dir:distcm,text={Text de l'etiqueta},text options={above}}
on
N = número de fase
g = angle en contra de les agulles del rellotge on para l'extrem de la línia dins rodona de la fase
dir = angle que forma la línia amb la fase
dist = distància en cm del text a la fase = longitud línia entre l'etiqueta i la fase
option: pot ser sobre la fase (above) o sota la fase (below).

Per exemple: \addmilestone{at=phase-4.90,direction=90:1.5cm,text={Producció},text options={above}}

El resultat es pot veure al PDF Línies de temps amb tikz i el codi es pot estudiar al document tex font corresponent.

Hem fet una petita modificació a la llibreria tikzlibrarytimeline.code.tex de manera que per defecte la paraula que apareix no sigui week sino setmana

dijous, 14 de maig del 2015

Gràfics de sectors circulars amb tikz

Hem vist en articles anteriors que amb tikz es pot fer tot tipus de representació gràfica de dades o conceptes. Així hem vist com crear Mapes conceptuals amb tikz , Diagrames de flux amb tikz o Diagrames de Gantt o cronogrames. En aquest article veurem com —a partir de les dades numèriques— tikz ens construeix un diagrama de sectors circulars i li dóna el format que vulguem.

Abans de res, però, hem de descarregar de la web de l'autor el paquet amb la documentació i el fitxer d'estil. Ho trobarem a: https://code.google.com/p/pgf-pie/ El paquet es crida simplement amb un \usepackage{pgf-pie}.

Ara només cal introduir les dades al nostre fitxer tex dins d'un entorn tikzpicture amb el comandament \pie:

\begin{tikzpicture}
  \pie{%
  15/Menors de 20,%
  32/De 21 a 30,%
  30/De 31 a 40,%
  18/De 41 a 50,%
  5/Majors de 51}
\end{tikzpicture}

Observem que cada línia correspon a un sector i en ella diem el percentatge de casos (15% a la primera fila) i definim l'etiqueta (Menors de 20 anys a l'exemple).

Al processar obtenim aquesta gràfica:
Els diagrames són força configurables i es poden posar les etiquetes en diferents posicions així com afegir-hi una ombra.

També es poden dibuixar diferents tipus de diagrames, com ara el quadrat on cada sector queda representat per un rectangle proporcional a la dada corresponent. O bé en format polar, de manera que els angles dels sectors són tots igual però es diferencien per la longitud del radi, que és proporcional a les dades.

Podeu veure exemples dels diferents tipus de gràfics, així com del codi amb què s'obtenen en aquest document PDF. Per estudiar el codi tex o usar-lo de plantilla podeu descarregar el fitxer comprimit zip amb tots els documents font.

diumenge, 30 de novembre del 2014

Mapes conceptuals amb tikz

El paquet tikz té una biblioteca especial (mindmap) per crear mapes conceptuals o mentals molt vistosos. En aquest article veurem com crear un d'aquesta mapes conceptuals, en concret un sobre el portafolis electrònic o eportafolis.



Comencem creant els estils dels nodes arrel i els dels altres conceptes que en sortiran. Per exemple definim l'estil de tots els nodes:
every node/.style={concept,%tipus de node=concept
                 font=\sffamily,% tipus de lletra 
                 circular drop shadow,%ombra},
evidencia/.style={%concepte evidència         
                 concept color=red,%color del node
                 faded/.style={concept color=red!50}},%definim una variant atenuada

Si volem redefinir o afegir característiques a un node tenim el comandament append style:
root concept/.append style={
                 concept color=black,
                   %fill=white, %omple de color blanc
                   line width=1ex,
           %text=black, %color del text
           text=white,
           font=\large\scshape},% família i tipus de lletra

També s'ha de definir com es distribuiran els conceptes fills en els diferents subnivells:
level 1/.append style={level distance=4.5cm,%distància de l'arrel al primer nivell
                     %sibling angle=90,% angle que formaran els fills entre sí. Aquí fixat a 90º
                     sibling angle=360/\the\tikznumberofchildren,%divideix 360 entre el nombre de fills perquè tots els angles siguin iguals
                     font=\scshape},%tipus de lletra

Un cop definits tots els estils comencem a dibuixar el mapa començant per l'arrel:
\node [root] (NomDelConcepte) {Contingut}

A Contingut hi podem posar un text curt, millor una paraula, o be incloure una imatge amb \includegraphics.
Del node arrel hi surten els fills i "néts":
child [EstilDeConcepte] { node [yshift=-1cm]  (NomDelConcepte) {Contingut fill 1}
                            child{ node(NomDelConcepte) {Contingut nét 1}}
                    child{ node(NomDelConcepte) {Contingut nét 2}}
                    child{ node(NomDelConcepte) {Contingut nét 3}}
}%tanca el fill 1

Val la pena estudiar el codi al fitxer mapamental.tex i veure com, un cop processat, en resulta el PDF mapamental.pdf tan impressionant.

Es pot trobar més informació sobre la biblioteca de mapes mentals i trucs al Manual de PGF-tikz i a l'etiqueta mindmaps de tex.stackexchange

diumenge, 16 de novembre del 2014

Diagrames de flux amb tikz

Un diagrama de flux és una figura que il·lustra un procés, que pot ser informàtic (un algorisme) o de qualsevol altra mena. Són molt útils per visualitzar la seqüència de les accions i què passa quan cal prendre algun tipus de decisió.

Amb tikz es pot fer tot tipus de figures i gràfics i, no podia ser d'altra manera, es poden construir diagrames de flux clars, entenedors i atractius. En aquest article veurem com es crea una figura amb tikz i com, en acabat, es pot incrustar en qualsevol document LaTeX.

Un diagrama de flux consta d'unes "caixes" de text connectades per línies. Aquestes "caixes" tenen diferent forma -i color- segons el que representin: l'entrada del procés, una acció, una decisió o la sortida. A  tikz  aquestes caixes se'n diuen nodes i es poden construir fàcilment amb l'ajut de biblioteques específiques simplement donant el nom de la figura que cal dibuixar. Per exemple, per dibuixar un node d'entrada al procés amb forma rectangular només cal definir el node amb les ordres: rectangle i draw, és a dir "dibuixa un rectangle". Naturalment podem donar un format més acurat al node, cosa que es fa abans de començar a dibuixar els nodes sota el comandament de configuració \tikzset. Vegem un exemple de definició de l'estil d'un node de decisió:

decisio/.style = {diamond,% forma geomètrica de romb 
                     draw, 
                     top color= white,% color de la part superior del degradat
                     bottom color=red,% color de la part inferior del degradat
                     drop shadow,% ombra
                     text width=8em, % ampla del text
                     text badly centered, % centrat del text
                     node distance=3cm, %distància al centre dels altres nodes
                     inner sep=0pt},%separació del text a la figura que el conté

Dins d'aquest comandament de configuració també es pot definir el format de les línies que uniran els nodes, per exemple amb forma de fletxes:

linia/.style = {draw, 
                     line width=1.5pt,%gruix de la línia
                     % per veure els estils de fletxa: http://tex.stackexchange.com/questions/42611/list-of-available-tikz-libraries-with-a-short-introduction/42679
                    -triangle 45},% la fletxa és un triangle de 45º

Un cop definits els estils dels nodes i de les línies passem a dibuixar el diagrama (\tikzpicture) tot posant els nodes un a sota dels altres. Comencem pel primer, un node d'entrada:

\node [entrada] (inici) {Text del node\\segona línia de text};

  • \node és el comandament que dibuixarà el node
  • [entrada] és el format del node que hem definit prèviament
  • (inici) és el nom que li donem al node i que l'identificarà dins la figura
  • {Text} és el text que apareix dins del node, dins del rectangle en aquest cas.
El segon bloc el volem situat sota el node inici, per això escrivim:
    \node [bloc, below=of inici] (divesquerra) {Text...};
  • la diferència respecte al primer node és a [bloc, below=of inici], on bloc és l'estil de node i below=of inici diu on s'ha de situar el bloc (sota d'inici).  Amb above=of, right=of i left=of el posaríem a sobre, a la dreta o a l'esquerra respectivament.
D'aquesta manera anem situant els diferents tipus de bloc. Quan ja estan tots dibuixem les línies amb punta de fletxa que els uneixen:
    \draw [linia] (inici) -- (divesquerra);
Podem dibuixar línies acodades amb |- ó amb -|:
    \draw [linia] (a1) |- (divesquerra); 
Finalment, podem dibuixar un doble colze si marquem un punt del diagrama, una coordenada, i hi fem arribar una línia sense punta i que en surti una altra amb punta:
    \coordinate[right=5cm of donau]   (a1);
  • Aquest punt de coordenades és 5cm a la dreta del node donau i l'anomenem a1.
Al fitxer tex diagramadeflux.tex podeu veure el codi comentat del diagrama complet. I al fitxer diagramadeflux.pdf  podeu veure'n el resultat. S'hi representa l'algorisme de la multiplicació russa, una manera molt interessant de fer multiplicacions.

dimarts, 6 d’agost del 2013

Diagrames de Gantt o cronogrames

Abstract (en): A Gantt chart is a type of bar chart, developed by Henry Gantt, that illustrates a project schedule. Gantt charts illustrate the start and finish dates of the terminal elements and summary elements of a project. We can buid Gantt charts in LaTeX with pgfgantt package.

Els diagrames de Gantt o cronogrames són representacions gràfiques que permeten visualitzar les fites i dates dels projectes. Això permet que fer el seguiment dels projectes i la seva avaluació sigui molt més senzill. Amb pgfgantt podem crear-los en els documents LaTeX.

El paquet  pgfgantt proporciona l’entorn ganttchart que dibuixa un diagrama de Gantt en una imatge TikZ.

L’usuari, per personalitzar el diagrama, pot afegir diversos elements al gràfic, com ara:
  • títols amb el comandament \gantttitle
  • barres amb \ganttbar
  • fites amb \ganttmilestone
  • grups amb \ganttgroup
  • enllaços entre aquests elements amb el comandament \ganttlink
Cada element és una línia del diagrama que té un punt d’origen i un altre de final dins el calendari del projecte. Els enllaços permeten veure com estan relacionats entre sí els diferents elements i si, per exemple, perquè comenci un cal que s’acabi un altre.

Per crear una línia nova només cal escriure dues contrabarres \\ al final de l’element. Si no les posem els elements se situen en la mateixa línia.

Al document tex adjunt podeu trobar alguns exemples de cronogrames i estudiar-ne el codi. Al PDF adjunt en podeu veure el resultat.

A https://github.com/jqueralt/gantt trobareu les darreres versions dels fitxers.

Publicat per primera vegada el dissabte 8 de desembre de 2012.

diumenge, 21 de juliol del 2013

Capçaleres i peus molt originals

Treballant alhora amb els paquets PGF i fancyhdr podem aconseguir efectes sorprenents

El paquet PGF, escrit per en Till Tantau l’autor de beamer, una classe molt interessant de presentacions, permet crear gràfics molt precisos directament al document PDF, sense haver de passar per PS com ha de fer pstricks. És per tant un paquet molt útil i d’una simplicitat sorprenent. Amb ben pocs comandaments obtenim uns resultats brillants, com veurem tot seguit.

En aquest article, espero que el primer d’una sèrie, tractarem només un aspecte de PGF, els anomenats nodes. A PGF es defineix un node com una etiqueta que normalment acompanya a un gràfic. Per exemple, per identificar un vector que va de l’origen de coordenades al punt (2,3) podem posar al seu costat l’etiqueta v, cosa que fem, dins l’entorn tikzpicture amb el comandament:
 \begin{tikzpicture}
 \draw[color=red,->] (0,0) -- node[color=red] {$\vec{v}$} (2,3);
 \end{tikzpicture} 
Ja es pot veure que la sintaxi és node[opcions]{text} on les opcions poden ser el color del contorn, del farcit, l’ombrejat, etc i el text és el text de l’etiqueta que veurem al document i que, naturalment, pot ser de qualsevol mena incloent el llenguatge matemàtic.

Doncs bé, PGF permet dibuixar moltes d’aquestes etiquetes per sí mateixes, sense cap altre objecte usant el commandament \node. I hem volgut aprofitar aquesta característica per millorar l’aspecte de capçaleres i peus. Així hem aconseguit posar el número de pàgina o el nom de la secció dins de figures geomètriques de diferents colors i ombrejats.

PGF permet incloure els seus comandament no solament dins l’entorn tikzpicture sinó també a continuació del comandament \tikz{argument} on l’argument pot ser tan complex com vulguem.

Aquesta possibilitat és molt interessant si la utilitzem com argument de capçaleres o peus d’un document on s’estigui usant, alhora, el paquet fancyhdr. Així podem obtenir, posem per cas, a la capçalera esquerra (\lhead) d’un document el nom de la secció (\leftmark) en color blau dins un rectangle contornejat en blau i ple de blau al 20%:
 \lhead{\tikz{\node[shape=rectangle,draw=blue,fill=blue!20,text=blue,]{{\leftmark}};}} 
Als documents adjunts podreu trobar una mostra amb 3 capçaleres i 3 peus diferents on s’ha usat el paquet PGF per obtenir-los. Estudieu el document tex original per veure com s’han obtingut els resultats del PDF adjunt i experimenteu amb les diferents opcions fins a trobar la que més us abelleixi.

Publicat per primera vegada el divendres 23 de desembre de 2005.

Podcast sobre PGF

Un experiment que pot donar lloc a un nou servei

Aprofitant dues avinenteses presento aquí un enllaç cap a un podcast sobre el paquet PGF.

Un podcast és un fitxer de so, en aquest cas un mp3 on hi ha veu i música de fons.

La veu explica coses que estic descobrint sobre el paquet PGF i TikZ. És un paquet molt interessant escrit per en Till Tantau, l’autor d’un dels paquets més interessants i moderns de LaTeX, la classe de documents per a fer presentacions Beamer. Espero que us agradi.

Publicat per primer cop el dilluns 28 de novembre de 2005