Risposte nei forum create
-
AutoreRisposte
-
::
Ti ringrazio molto per il tempo e lo sforzo che hai dedicato al mio problema, il risultato è eccellente.Ho imparato molti aspetti nuovi di [tt]pgfplots[/tt] e mi riprometto di leggere più a fondo il manuale.
Posto il codice definitivo a cui ho aggiunto le misure mancanti e le etichette dell’asse y da una nuova colonna del file [tt]data.dat[/tt]
`
\documentclass{article}
\usepackage[svgnames]{xcolor}
\usepackage{pgfplots}
\usepgfplotslibrary{dateplot}
\usetikzlibrary{shadings,shadows,fadings,calc}\pgfplotsset{height=12cm,width=10cm}
\pgfplotstableread{data.dat}{\misure}
\pgfplotstablegetrowsof{\misure}
\pgfmathsetmacro{\righe}{\pgfplotsretval-1}\begin{document}
\begin{tikzpicture}
\tikzfading [name=dissolvenza, top color=transparent!0, bottom color=transparent!95]
\tikzstyle{ripieno}=[top color=DodgerBlue, bottom color=RoyalBlue, general shadow={fill=black, shadow yshift=-0.8ex, path fading=dissolvenza}]
\def\h{0.3} % semialtezza del rettangolo\begin{axis} [xmin=2009-03-28, xmax=2012-07-10, y dir=reverse, xmajorgrids=true,
date coordinates in=x, date ZERO=2009-03-28,
xtick={2009-03-28,2009-10-14,2010-05-02,2010-11-18,2011-06-06,2011-12-23,2012-07-10},
xticklabel={\day-\month-\year}, x tick label style={rotate=45,anchor=east},
ytick={1,2,3,…,17},
yticklabels from table={data.dat}{nome},
ylabel=Misure,
]\foreach \i in {0,…,\righe}
{
\pgfplotstablegetelem{\i}{i}\of\misure
\let\skip\pgfplotsretval
\pgfplotstablegetelem{\i}{inizio}\of\misure
\let\inizio\pgfplotsretval
\pgfplotstablegetelem{\i}{fine}\of\misure
\let\fine\pgfplotsretval
\edef\temp{
\noexpand
\fill [ripieno] (axis cs:\inizio,\skip) ++ (axis direction cs:2009-03-28,-\h)
rectangle ($(axis cs:\fine,\skip) + (axis direction cs:2009-03-28,\h)$);}
\temp
}\addplot [draw=none] coordinates {(2009-03-28,1.5) (2012-07-10,16.5)};
\end{axis}
\end{tikzpicture}
\end{document}`
il file [tt]data.dat[/tt]:
`nome i inizio fine
E.1 1 2009-06-08 2012-01-18
E.2 2 2009-04-29 2012-01-18
E.3 3 2010-07-18 2012-01-18
E.4 4 2009-04-29 2011-11-20
E.5 5 2009-12-14 2012-01-09
E.6 6 2010-06-21 2010-09-20
E.7 7 2009-06-19 2012-01-05
E.8 8 2009-04-29 2011-08-16
E.9 9 2010-06-21 2010-09-20
E.10 10 2009-04-29 2011-08-15
E.11 11 2009-04-29 2011-10-20
C.1 12 2009-04-29 2010-07-28
D.1 13 2009-04-29 2012-01-18
E.12 14 2009-04-29 2012-01-16
E.13 15 2009-04-27 2011-08-16
E.14 16 2009-04-27 2012-01-16
E.15 17 2010-06-21 2010-09-20`OT: se posso abusare abusare ancora delle tua pazienza, e di quella degli altri che vorranno rispondere…. lo stile applicato a [tt]\fill[/tt] lo hai creato tu? Hai tratto ispirazione da qualcosa in particolare? Sapresti consigliarmi un effetto simile (anche senza le ombre, bastano le sfumature) da applicare ad altri colori (es: rosso,verde,arancio) in modo da dare lo stesso aspetto ad istogrammi con più serie di dati?
Se credete che la domanda meriti un nuovo post sarò lieto di crearne uno.
Grazie ancora e buona serata
Andrea
::
Ho modificato così il file esterno
`left,right,inizio,fine
0.7,1.3,2009-11-08,2012-01-18
1.7,2.3,2009-04-29,2012-01-18
2.7,3.3,2010-11-18,2012-01-18
3.7,4.3,2010-04-29,2011-11-20`
in modo da avere una situazione più chiara.Di fatto il ciclo disegna SOLO l’ultima riga [tt]3.7,4.3,2010-04-29,2011-11-20[/tt]
::Liverpool” post=77167
Qualcuno ha idea del perché?
Perché hai usato il comando [tt]\end[/tt] come etichetta per il disegno.
Hai ragione, ti ringrazio.
Però se il problema è solo la somma di 0.7 e 0.3, si possono spostare all’interno del file [tt]dati.dat[/tt] generando con excel, così:
`
left,right,inizio,fine
0.7,1.3,2009-06-08,2012-01-18
1.7,2.3,2009-04-29,2012-01-18
2.7,3.3,2010-07-18,2012-01-18
3.7,4.3,2009-04-29,2011-11-20
`
Quindi
`\documentclass{article}
\usepackage{datatool}
\usepackage[svgnames]{xcolor}
\usepackage{pgfplots}
\usepgfplotslibrary{dateplot}
\usetikzlibrary{shadings,shadows,fadings}
%\pgfplotsset{compat=1.6}\DTLloaddb[noheader=false]{misure}{dati.dat}
\begin{document}
\begin{tikzpicture}
\tikzfading [name=dissolvenza, top color=transparent!0, bottom color=transparent!95]
\tikzstyle{ripieno}=[top color=DodgerBlue, bottom color=RoyalBlue, general shadow={fill=black, shadow yshift=-0.8ex, path fading=dissolvenza}]\begin{axis} [xmin=2009-03-28, xmax=2012-07-10, y dir=reverse, date coordinates in=x, xmajorgrids=true,
xtick={2009-03-28,2009-10-14,2010-05-02,2010-11-18,2011-06-06,2011-12-23,2012-07-10},
xticklabel={\day-\month-\year}, x tick label style={rotate=45,anchor=east},
ytick={1,2,3,4}, ylabel=Misure]\DTLforeach*{misure}{\start=inizio, \fine=fine, \l=left, \r=right}{\fill [ripieno,] (axis cs:\start,\l) rectangle (axis cs:\fine,\r);}
%\fill [ripieno] (axis cs:2009-04-29,0.7) rectangle (axis cs:2011-11-20,1.3);
%\fill [ripieno] (axis cs:2010-07-18,1.7) rectangle (axis cs:2012-01-18,2.3);
%\fill [ripieno] (axis cs:2009-04-29,2.7) rectangle (axis cs:2012-01-18,3.3);
%\fill [ripieno] (axis cs:2009-06-08,3.7) rectangle (axis cs:2012-01-18,4.3);\addplot [draw=none] coordinates {(2009-03-28,0.7) (2012-07-10,4.3)};
\end{axis}\end{tikzpicture}
\end{document}`Tuttavia il loop non sembra funzionare correttamente.
::
Non avevo pensato al pacchetto datatool per leggere dati da un file esterno. Ho modificato il codice di Liverpool così
`
\documentclass{article}
\usepackage{datatool}
\usepackage[svgnames]{xcolor}
\usepackage{pgfplots}
\usepgfplotslibrary{dateplot}
\usetikzlibrary{shadings,shadows,fadings}
%\pgfplotsset{compat=1.6}\DTLloaddb[noheader=false]{misure}{dati.dat}
\begin{document}
\begin{tikzpicture}
\tikzfading [name=dissolvenza, top color=transparent!0, bottom color=transparent!95]
\tikzstyle{ripieno}=[top color=DodgerBlue, bottom color=RoyalBlue, general shadow={fill=black, shadow yshift=-0.8ex, path fading=dissolvenza}]\begin{axis} [xmin=2009-03-28, xmax=2012-07-10, y dir=reverse, date coordinates in=x, xmajorgrids=true,
xtick={2009-03-28,2009-10-14,2010-05-02,2010-11-18,2011-06-06,2011-12-23,2012-07-10},
xticklabel={\day-\month-\year}, x tick label style={rotate=45,anchor=east},
ytick={1,2,3,4}, ylabel=Misure]\DTLforeach*{misure}{\start=inizio, \end=fine, \skip=i}{\fill [ripieno] (axis cs:\start,\skip.7) rectangle (axis cs:\end,\skip.3);}
%\fill [ripieno] (axis cs:2009-04-29,0.7) rectangle (axis cs:2011-11-20,1.3);
%\fill [ripieno] (axis cs:2010-07-18,1.7) rectangle (axis cs:2012-01-18,2.3);
%\fill [ripieno] (axis cs:2009-04-29,2.7) rectangle (axis cs:2012-01-18,3.3);
%\fill [ripieno] (axis cs:2009-06-08,3.7) rectangle (axis cs:2012-01-18,4.3);\addplot [draw=none] coordinates {(2009-03-28,0.7) (2012-07-10,4.3)};
\end{axis}\end{tikzpicture}
\end{document}
`dove dati.dat è
`i,inizio,fine
1,2009-06-08,2012-01-18
2,2009-04-29,2012-01-18
3,2010-07-18,2012-01-18
4,2009-04-29,2011-11-20
`
tuttavia non compila neanche abilitando
`
%\pgfplotsset{compat=1.6}
`
come suggerito da file log.Qualcuno ha idea del perché?
::
Che dire…ottimo!! Ha grande impatto visivo, nonché la coerenza tipografica che cercavo.Ti ringrazio molto…
Il problema che rimane è che in effetti le misure sono molte, io le ho ridotte per poter fornire un esempio minimo. In realtà ho 17 misure, ognuna delle quali si riferisce ad un edificio diverso. Sarebbe quindi utile poter automatizzare il tutto, almeno la lettura dei dati e delle etichette dell’asse y (i nomi degli edifici) da un file esterno del tipo:
Nome edificio Inizio Fine
…Non so se tikz permetta la lettura da file esterni; nel caso non si possa valuterò se adottare la tua soluzione manuale o appoggiarmi ad un programma esterno.
Grazie ancora
::
Ciao,
anche io frequento ingegneria meccanica ed ho imparato ad usare Latex per la tesi triennale. Inutile dirti che non sono più tornato indietro e ho approfittato di numerosi vantaggi.Oltre a tutti quelli che sono già stati scritti, te ne riporto altri due con una breve descrizione del perché mi sono stati tanto utili.
1) Definizione di comandi personali
L’utilità di questa funzione è ben spiegata ne L’Arte di scrivere con latex, inoltre Marco87 ha scritto:Marco87″ post=76496
4 – Formattazione di parti di testo. In LaTeX puoi creare nuovi comandi che formattino una certa parte del testo (una parola, un’espressione o altro) come vuoi tu. Se dovessi cambiare idea sulla sua formattazione, ti basterebbe modificare la riga in cui hai creato quel comando, senza andare in giro per il testo a fare la ricerca a mano e poi a fare la modifica;A me è capitato di seguire il corso termodinamica XYZ tenuto del prof A e dal prof B. Era prevista la consegna di una relazione di circa 100 pagine. Il prof A indica portata in massa, flusso termico e potenza meccanica come
\begin{equation}
\dot{m} \qquad \dot{Q} \qquad \dot{L}
\end{equation}
il prof B come
\begin{equation}
G \qquad \Phi \qquad W
\end{equation}
Latex mi ha permesso di preoccuparmi del significato di cosa andavo a scrivere e non di come lo scrivevo definendo ad esempio il comando `\m` come
`\newcommand{\m}{\dot{m}}`
così quando, a una settimana dalla consegna, il prof B mi ha… ehm…”rimproverato duramente” per non aver usato la “sua” notazione ho cambiato tre sole righe di codice nel preambolo e non le centinaia di occorrenze nel testo.2) Inserimento listati
Grazie al pacchetto listing è si possono inserire listati di codici indicando semplicemente in nome del file che contiene il codice. Esempio: vuoi inserire il listato del file MATLAB “pippo.m” che è in una cartella condivisa e soggetto a continue modifiche? Nessun problema: ad ogni compilazione latex inserirà automaticamente la versione corrente del file, colorando secondo la sintassi di MATLAB le parole chiave in blu, le stringhe in rosso scuro, i commenti in verde ecc… vuoi che il listato appaia in bianco e nero? Nessun problema: cambi una riga di codice, ricombili ed il gioco e fatto… Vuoi personalizzare ulteriorment l’aspetto di tutti i codici che inserisci nel testo? Lo fai una sola volta nel preambolo e non a mando in tutte le occorrenze…Spero di esserti stato utile…
Buona giornata
Andrea
::
Ciao Enrico,
ti ringrazio della risposta; durante la mia ricerca di una risposta mi ero già fatto un’idea che fosse una bruttura, ma un’opinione autorevole è sempre ben accetta. 🙂Allora riformulo la domanda: poiché vorrei tenere il maiuscoletto all’interno del testo è possibile avere, per coerenza, il solo maiuscoletto (non nero) all’interno della lista degli acronimi?
Grazie in anticipo
::
Ciao Ivan,
l’utilizzo del solo campo label:
`
@proceedings{sharp:BenchSchool,
label = {Sharp, Terry},
title = {Benchmarking Energy Use in Schools},
date = {1998},
pages = {3.305-3.316},
note = {Proceedings of the 1998 ACEEE Summer Study},
location = {Washington, DC},
institution = {ACEEE},
hyphenation = {english},
}
`
produce:
Benchmarking Energy Use in Schools, Proceedings of the 1998 ACEE Summer Study, DC 1998, p. 3.305-3.316.
Senza quindi l’indicatore del campo label e ordinato secondo la B di benchmarking.Se utilizzo:
`
@proceedings{sharp:BenchSchool,
editor = {Sharp, Terry},
label = {Sharp, Terry},
title = {Benchmarking Energy Use in Schools},
date = {1998},
pages = {3.305-3.316},
note = {Proceedings of the 1998 ACEEE Summer Study},
location = {Washington, DC},
institution = {ACEEE},
hyphenation = {english},
}
`
L’editor viene ancora sostituito con — (a cura di).
Dove sbaglio?Nella seconda voce metti
label = {Sharp, Terry}Non è una soluzione e funziona solo perché usi lo schema numerico.
Personalmente non lo farei.Non utilizzeresti la combinazione philosophy-verbose+numeric oppure lasceresti l’indicazione — come secondo editor? E, se posso, perché faresti così?
Grazie
Andrea
::
Ciao Ivan,
ti ringrazio per la risposta, adesso ottengo il risultato desiderato. Ho però un nuovo problema: ho due voci del tipo
`
@proceedings{sharp:BenchCommerOffice,
editor = {Sharp, Terry},
title = {Energy Benchmarking In Commercial Office Buildings},
date = {1996},
pages = {4.321-4.329},
note = {Proceedings of the 1996 ACEEE Summer Study},
url = {http://www.energy.ca.gov/greenbuilding/documents/background/13-ORNL_COM_BLDG_BENCHMARKING.PDF},
location = {Washington, DC},
institution = {ACEEE},
hyphenation = {english},
}
@proceedings{sharp:BenchSchool,
editor = {Sharp, Terry},
title = {Benchmarking Energy Use in Schools},
date = {1998},
pages = {3.305-3.316},
note = {Proceedings of the 1998 ACEEE Summer Study},
location = {Washington, DC},
institution = {ACEEE},
hyphenation = {english},
}
`
poiché l’editor è lo stesso la seconda voce viene resa come:
— (a cura di), Benchmarking….
sarebbe possibile forzare l’inserimento dell’editor anche per la seconda voce, anche se si ripete dalla voce precedente?Ti ringrazio in anticipo
Buona serata
-
AutoreRisposte