pgfplots dividere asse y

  • Creatore
    Topic
  • #103371
    Up
    0
    Down
    ::


    Buongiorno,
    spero che sia l’ultima domanda per finire questo articolo!! 🙁 🙁
    Sullo stesso grafico devo mettere due linee che hanno scostamenti veramente minimi e soprattutto sono su due livelli diversi (l’asse delle y è in kg, uno si aggira intorno ai 40 kg, mentre l’altro intorno ai 50). E’ possibile dividere l’asse in due mettendo un segno di divisione tipo 38-42Kg, segno, 53-57Kg?
    Il codice che uso ora è:
    `\documentclass{standalone}

    \usepackage{pgfplots}
    \pgfplotsset{/pgf/number format/use comma,compat=1.12}

    \usepackage{siunitx}
    \DeclareSIUnit\chelsius{\degree C}

    \begin{document}

    \begin{tikzpicture}
    \begin{axis}[
    xmin = 0,
    xmax = 1440,
    ymin = 38,
    ymax = 55,
    % width=19cm,
    xtick={0,120,240,360,480,600,720,840,960,1080,1200,1320,1440},
    xticklabels={0,2,4,6,8,10,12,14,16,18,20,22,24},
    xlabel=Time (hour),
    ylabel=Load (\si{\kilo\gram}),
    %grid=major,
    xtick scale label code/.code={},
    %hide x axis,
    %axis y line*=right,
    legend pos=south east,
    ]
    % \addplot [red, thick,mark=*,mark repeat=100] file [x=num,y=AccTwo]
    \addplot [green,thick] table [x=Num, y=Load1]
    {day197.csv};
    \addplot [red, thick] table [x=Num, y=Load2]
    {day197.csv};
    % \addplot [green, thick] file [x=Num, y=H2]
    % {load.csv};
    % \legend{Hive 1}
    \legend{Wooden Hive, Plastic Hive}
    \end{axis}
    \end{tikzpicture}

    \end{document}`

    ed ottengo
    [attachment=1423]day197-load.pdf[/attachment]

    Grazie
    Marco

    Attachments:
    You must be logged in to view attached files.
Visualizzazione 8 filoni di risposte
  • Autore
    Risposte
    • #103372
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Qualunque cosa ti decida di fare, evita i Kg (kelvin-grammi) e usa i kg (kilo-grammi).

      • #103373
        Liverpool
        Partecipante
          Up
          0
          Down
          ::


          Qualcosa tipo l’opzione [tt]axis y discontinuity[/tt]?

        • #103374
          Liverpool
          Partecipante
            Up
            0
            Down
            ::


            Puoi provare qualcosa del genere:
            `\documentclass

            {standalone}
            \usepackage{pgfplots}
            \pgfplotsset{compat=1.12}
            \tikzset{onda/.pic={
            \draw [white] (0,-0.5mm) — ++(0,1mm);
            \draw (-2mm,-0.5mm) to [out=45, in=-135, relative] ++(4mm,0)
            (-2mm,+0.5mm) to [out=45, in=-135, relative] ++(4mm,0);
            }}

            \begin{document}
            \begin{tikzpicture}
            \begin{axis} [xlabel= Time (hour), ylabel={Load (kg)},
            xmin=0, xmax=24, xtick={0,2,…,24},
            ymin=46, ymax=58, ytick={53,…,57}]
            \addplot+ [domain=0:24] {55}; % qui ci va il primo grafico <------------ \end{axis} \begin{axis} [axis x line=none, xmin=0, xmax=24, ymin=37, ymax=49, ytick={38,...,42}] \addplot+ [domain=0:24] {40}; % qui ci va il secondo grafico <---------- \end{axis} \pic at (rel axis cs:0,0.5) {onda}; \pic at (rel axis cs:1,0.5) {onda}; \end{tikzpicture} \end{document}` In alternativa, potresti applicare una decorazione all'asse y, ma mi sembra (almeno per me) più complicato. [attachment=1424]prova_2015-09-28.png[/attachment]

            Attachments:
            You must be logged in to view attached files.
          • #103375
            Up
            0
            Down
            ::


            dove ho usato i kelvin? se non erro ho usato \si{\kilo\gram}!

          • #103376
            OldClaudio
            Partecipante
              Up
              0
              Down
              ::


              Può dari che tu abbia usato i comandi giusti nel file .tex, ma nel messaggio al quale ho sollevato questo punto avevi scritto una volta kg e due volte Kg.

              Per carità; si tratta di una osservazione di carattere generale; se non ci si abitua a scrivere correttamente sempre, ci si abitua agli errori che finiscono con il diventare normalità. Vedi quello che c’è scritto su ogni cartello stradale; quasi sempre Km e sono pochi i cartelli dive si legge km. Non c’è negozio dove sia scritto kg ma sempre Kg. I giornali poi sono fantastici: hanno anche inventato i megatoni (non sapendo nella traduzione dall’inglese che cosa significhi megaton). E dove mi metti i mhz (milli-etto-zapto)? 😀

            • #103377
              Up
              0
              Down
              ::

              OldClaudio” post=103402Può dari che tu abbia usato i comandi giusti nel file .tex, ma nel messaggio al quale ho sollevato questo punto avevi scritto una volta kg e due volte Kg.

              Per carità; si tratta di una osservazione di carattere generale; se non ci si abitua a scrivere correttamente sempre, ci si abitua agli errori che finiscono con il diventare normalità. Vedi quello che c’è scritto su ogni cartello stradale; quasi sempre Km e sono pochi i cartelli dive si legge km. Non c’è negozio dove sia scritto kg ma sempre Kg. I giornali poi sono fantastici: hanno anche inventato i megatoni (non sapendo nella traduzione dall’inglese che cosa significhi megaton). E dove mi metti i mhz (milli-etto-zapto)? 😀

              Non ho saputo resistere, l’osservazione di @OldClaudio fa venire in mente le fantastiche unità di misura dell’Ingegner Cane.

            • #103378
              Up
              0
              Down
              ::

              Liverpool” post=103400In alternativa, potresti applicare una decorazione all’asse y, ma mi sembra (almeno per me) più complicato.

              Neanche troppo a dire il vero: il meccanismo è di non disegnare il riquadro della tela ([tt]axis lines=none[/tt]), ma farlo successivamente “a mano” con un classico [tt]\draw[/tt]. A quel punto si può inserire la decorazione dove si vuole.

              EDIT: credo di avere toppato [tt]axis lines=none[/tt]… ho trovato un esempio in cui usavo [tt]y axis line style={white}[/tt]: almeno i tick si salvano 😉

              Ciao
              Claudio

            • #103379
              Liverpool
              Partecipante
                Up
                0
                Down
                ::

                cfiandra” post=103421Neanche troppo a dire il vero.

                Se mi fai vedere un esempio, imparo qualcosa di nuovo.

                Ciao

              • #103380
                Up
                0
                Down
                ::

                Liverpool” post=103426Se mi fai vedere un esempio, imparo qualcosa di nuovo.

                In realtà il tuo sistema con i pic è più semplice 😉

                Ridisegnare il riquadro della tela del grafico è veramente semplice: puoi accedere alle normali ancore (north, south ecc..) tramite il nome [tt]current axis[/tt]. Ho preso come esempio il tuo codice in alto: `\documentclass

                {standalone}
                \usepackage{pgfplots}
                \pgfplotsset{compat=1.12}

                \usetikzlibrary{calc,decorations.pathmorphing}

                \begin{document}
                \begin{tikzpicture}
                \begin{axis} [xlabel= Time (hour), ylabel={Load (kg)},
                xmin=0, xmax=24, xtick={0,2,…,24},
                ymin=46, ymax=58, ytick={53,…,57},
                y axis line style={opacity=0}]
                \addplot+ [domain=0:24] {55}; % qui ci va il primo grafico <------------ \end{axis} \begin{axis} [axis x line=none, xmin=0, xmax=24, ymin=37, ymax=49, ytick={38,...,42}, y axis line style={opacity=0}] \addplot+ [domain=0:24] {40}; % qui ci va il secondo grafico <---------- % ri-disegnare della tela \draw (current axis.south west)-- ($(current axis.south west)!0.45!(current axis.north west)$)coordinate(x)% per avere il riferimento successivamente - buco per decorazione ($(current axis.south west)!0.55!(current axis.north west)$)|-(current axis.north east) ; \draw (current axis.north east)-- ($(current axis.north east)!0.45!(current axis.south east)$)coordinate(y)% per avere il riferimento successivamente - buco per decorazione ($(current axis.north east)!0.55!(current axis.south east)$)|-(current axis.south west) ; \end{axis} \draw[decoration={zigzag,amplitude=3pt},decorate,help lines,black] (x)--++(0,.565); \draw[decoration={zigzag,amplitude=3pt},decorate,help lines,black] (y)--++(0,-.565); \end{tikzpicture} \end{document}` Il risultato: [attachment=1428]ScreenShot2015-09-30at8.46.39AM.png[/attachment] Problemini: attenzione a mantenere lo stesso stile della tela.. ho usato help lines solo per questione di tempo. Seconda cosa: il trucco di sovrapporre due tele per la scala incasina un po' i livelli di presentazione degli elementi, per quel motivo se noti attentamente il primo mark della retta in alto viene attraversato dal segmento della tela. Problema risolvibile facilmente spezzando il path e inserendo la parte che disegna "il bordo superiore" nel primo ambiente axis. Insomma, alla fine della fiera la tua soluzione era decisamente più semplice e immediata :) . Ciao Claudio

                Attachments:
                You must be logged in to view attached files.
            Visualizzazione 8 filoni di risposte
            • Devi essere connesso per rispondere a questo topic.

            Go to top