Re: Pgfplots e diagrammi di Gantt

#77895
Liverpool
Partecipante
    Up
    0
    Down
    ::


    Problema risolto. La spiegazione è a pag. 359 (par. 8.1) del manuale di pgfplots, nel capoverso che inizia con keep in mind.
    Ti allego il codice realizzato con datatool e quello realizzato con pgfplotstable, come suggerito da Claudio. Scegli tu la soluzione che ti piace di più.
    Fammi sapere se ci sono altri problemi.
    `\documentclass{article}
    \usepackage{datatool}
    \usepackage[svgnames]{xcolor}
    \usepackage{pgfplots}
    \usepgfplotslibrary{dateplot}
    \usetikzlibrary{shadings,shadows,fadings,calc}

    \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}]
    \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,4}, ylabel=Misure]

    \DTLforeach*{misure}%
    {\skip=i,\inizio=inizio,\fine=fine}%
    {\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,0.7) (2012-07-10,4.3)};
    \end{axis}
    \end{tikzpicture}
    \end{document}`
    `\documentclass{article}
    \usepackage[svgnames]{xcolor}
    \usepackage{pgfplots}
    \usepgfplotslibrary{dateplot}
    \usetikzlibrary{shadings,shadows,fadings,calc}

    \pgfplotstableread{dati.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,4}, 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,0.7) (2012-07-10,4.3)};
    \end{axis}
    \end{tikzpicture}
    \end{document}`

    Go to top