[pgfplots] Affiancare due grafici

  • Creatore
    Topic
  • #101860
    Up
    0
    Down
    ::


    Ciao a tutti.
    Probabilmente sarà per via di qualche errore banale che non vedo, ma non riesco ad affiancare due grafici che, singolarmente, mi vengono compilati senza problemi.

    I due singoli grafici cono prodotti con i codici:
    1) ferromagnete
    `\PassOptionsToPackage{dvipsnames}{xcolor}
    \documentclass[tikz]{standalone}

    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc}
    \usepackage[english,italian]{babel}
    \usepackage{csquotes}
    \usepackage{graphicx}
    \usepackage{siunitx}
    \usepackage{pgfplots}
    \sisetup{
    group-digits=true,
    group-separator={\,},
    output-decimal-marker={,}
    }
    \SendSettingsToPgf
    \usepgfplotslibrary{external}
    \usetikzlibrary{calc}

    \newcommand* {\pointX} {0}
    \newcommand* {\pointY} {3}

    \newcommand* {\vertX} {3}
    \newcommand* {\vertY} {3.6}

    \newcommand* \paramA {(\pointY – \vertY)/(\vertX * \vertX)}
    \newcommand* {\paramB} {2*(\vertY – \pointY)/\vertX}
    \newcommand* {\paramC} {\pointY}
    \newcommand* {\dashedX} {1}

    \begin{document}
    \centering
    \begin{tikzpicture}
    \begin{axis}[axis lines=middle, ticks=none,
    xmin=-5, xmax=5,xlabel={$h$},
    ymin=-5, ymax=5, ylabel={$m$}]
    \addplot [black, very thin, domain=0:\vertX] {\paramA * x^2 + \paramB * x + \paramC};
    \addplot [black, densely dashed, very thin, domain=-\dashedX:0] {\paramA * x^2 + \paramB * x + \paramC};
    \addplot [black, very thin, domain=-\vertX:0] {-\paramA * x^2 + \paramB * x – \paramC};
    \addplot [black, very thin, densely dashed, domain=0:\dashedX] {-\paramA * x^2 + \paramB * x – \paramC};
    \addplot[black, dotted] coordinates {(\dashedX, {-\paramA * \dashedX^2 + \paramB *\dashedX – \paramC}) (\dashedX, {\paramA * \dashedX^2 + \paramB *\dashedX + \paramC} ) };
    \addplot[black, dotted] coordinates {(-\dashedX, {\paramA * (-\dashedX)^2 + \paramB *(-\dashedX) + \paramC} ) (-\dashedX, {-\paramA * (-\dashedX)^2 + \paramB *(-\dashedX) – \paramC})};
    \node at (axis cs: \dashedX + 0.4, 0.3) {\tiny$+h^{*}$};
    \node at (axis cs: -\dashedX – 0.4, -0.3) {\tiny$-h^{*}$};
    \end{axis}
    \end{tikzpicture}
    \end{document}
    `

    2) gas sovrassaturo
    `
    \PassOptionsToPackage{dvipsnames}{xcolor}
    \documentclass[tikz]{standalone}

    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc}
    \usepackage[english,italian]{babel}
    \usepackage{csquotes}
    \usepackage{graphicx}
    \usepackage{siunitx}
    \usepackage{pgfplots}
    \sisetup{
    group-digits=true,
    group-separator={\,},
    output-decimal-marker={,}
    }
    \SendSettingsToPgf
    \usepgfplotslibrary{external}
    \usetikzlibrary{calc}

    \newcommand {\liquidVolume} {0.65}
    \newcommand {\gasVolume} {2.65}

    \begin{document}
    \centering
    \begin{tikzpicture}
    \begin{axis}[axis lines=middle,
    xmin=-1, xmax=5, xtick={\liquidVolume, \gasVolume}, xticklabels={$v_{l}$, $v_{g}$}, xlabel=$v$,
    ymin=-1, ymax=5, ytick=\empty, ylabel=$P$]
    \draw[black, very thin] plot[smooth, tension=.7] coordinates {(axis cs: 0.45, 4.5) (axis cs: 0.55, 3) (axis cs: \liquidVolume, 2.5)};% (axis cs: 3,2.5) (axis cs: 5,-3)};
    \draw[black, very thin] (axis cs: 0.65, 2.5) — (axis cs: \gasVolume, 2.5);
    \draw[black, very thin] plot[smooth, tension=.7] coordinates {(axis cs: \gasVolume, 2.5) (axis cs: 3.2, 1.5) (axis cs: 4, 1)};%(axis cs:)};
    \draw[black, very thin, densely dashed] (axis cs: 2.45, 3) — (axis cs: \gasVolume, 2.5);
    \draw[black, thin, densely dotted] (axis cs: 2.45, 3) — (axis cs: 2.45, 2.5);
    \end{axis}
    \end{tikzpicture}
    \end{document}
    `

    Ho provato ad affiancarli in vari modi, seguendo una decina di discussioni trovate online e leggendo il manuale di pgfplots nella parte riguardante l’allineamento verticale e orizzontale, ma niente.
    Non posto i vari codici, ma gli unici risultati che sono riuscito a ottenere (non volendo) sono stati quelli di allineare i due grafici l’uno sotto l’altro e quello di allinearli l’uno accanto all’altro, ma in un documento standalone che però era una pagina intera e non il singolo doppio grafico.
    Ovviamente, l’affiancamento di due immagini a sé stanti mi riesce. Con questi due grafici no.

    Non mi azzannate, sono tre giorni e passa che ci sto sbattendo la testa e ho perso le speranze di riuscire a risolvere da solo.

Visualizzazione 6 filoni di risposte
  • Autore
    Risposte
    • #101861
      robitex
      Amministratore del forum
        Up
        0
        Down
        ::


        Ciao.
        Ho provato a compilare i due grafici. Essi hanno dimensioni inferiori a 70 mm e non dovrebbero esserci problemi a farli stare uno affianco all’altro nella pagina.
        Che problema specifico hai?
        Qual è il codice di assemblaggio?
        R.

      • #101862
        Up
        0
        Down
        ::


        Ciao e grazie per l’interessamento.
        Al momento, l’unico codice con cui risolvo (provato proprio ora) è
        `\documentclass{standalone}

        %pacchetti vari

        \begin{document}
        \centering
        \begin{tabular}{cc}
        \includegraphics{../ComportamentoMetastabileFerromagneti/ComportamentoMetastabileFerromagneti} & \includegraphics{../ComportamentoMetastabileGasSovrassaturo/ComportamentoMetastabileGasSovrassaturo} \\
        \end{tabular}
        \end{document}`

        Qualsiasi altro codice, anche semplicemente copiato paro paro dal manuale di pgfplots, non mi compila o mi produce roba assurda.
        Appena ho modo recupero i codici che avevo provato (sono sull’altro hdd) e te li mostro.

        Scusa la domanda, ma se tu dovessi affiancarli direttamente in una singola immagine, come faresti? Che codice (possibilmente direttamente usando pgfplots) useresti?

      • #101863
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Se con standalone riesci a farlo, è perché standalone rifila il suo contenuto in modo che non sia affiancato da spazio bianco, che non vedi ma che c’è, ed è per quello spazio bianco attorno che i tuoi grafico non possono essere affiancati all’interno dello stesso ambiente figure.

          Devi vedere come dimensionare il contenuto di ogni tikzpicture in modo che riempai completamente il suo rettangolo circoscritto; se così come sono Roberto misura quelle figure e trova che son larghe 70mm, e se la giustezza del tuo documento è maggiore di 140mm (il che potrebbe essere un altro motivo per il quale non ti ci stanno sulla pagina affiancati) non ci sono motivi epr i quali tu non possa inserirli direttamante nel tuo documento. La strada di includerli direttamente con due \includegrpahics, va bene, ma senza usare una tabella: hai provato a usare questo codice?`
          \begin{figure}
          \includegraphics[width=…]{Prima figura}
          \hfill
          \includegraphics[width=…]{Seconda figura}
          \caption{…}\label{…}
          \end{figure}
          `
          Quell’\hfill è gomma elastica che riempie qualsiasi spazio anche nullo, ma non negativo, e spinge gli oggetti fra in quali è inserito verso gli estremi dalla giustezza. Tabular, invece mette degli spazi paro a \tabcolsep ai due lati di ogni cella, quindi ne hi il doppo fra le due figure inserite nella tabella, oltre agli spazi ai lati esterni, spazi che non vedi ma che ci sono.

        • #101864
          Up
          0
          Down
          ::


          Grazie per le cortesi risposte e i suggerimenti.
          OldClaudio, quel codice che mi hai suggerito funziona… stavo talmente preso a risolvere in modi “complessi” che non mi è venuto in mente quello più lineare 🙂

          Al momento l’ho sfangata usando il codice che ho mostrato (a dire il vero, cambiato con quello suggeritomi da OldClaudio), ma vorrei capire meglio come risolvere usando solo pgfplots.
          Ho visto sul manuale (e mi pare anche di averlo fatto in passato) che è possibile affiancare due grafici. In questo senso, vorrei capire come risolvere a monte. Il “top” sarebbe ottenere un “doppio” grafico, scorporato dal documento originale.
          L’utilizzo di standalone, infatti, mi è stato suggerito qui e mi ha semplificato parecchio la creazione di documenti corposi, da cui ho separato i grafici, creandoli appunto come singoli documenti e “importandoli” nel documento principale solo quando ho finito di “rifinirli”.

          Mi ributto a leggere il manuale di pgfplots e di standalone per capire questo discorso sui millimetri, perché (come ho detto anche in un’altra discussione causando un cazziatone 😀 ) non la “gestisco bene”.

        • #101865
          OldClaudio
          Partecipante
            Up
            0
            Down
            ::



            @l3on4rdo
            , non uso abbastanza tikz e pgfplots, in particolare per quel che riguarda tikzpicture, per dirti dove guardare nella documentazione.
            Però, per quel poco che ho usato pgfplots, quando hi tanti disegni complessi la compilazione dura un mucchio di tempo; separare la compilazione dei singoli disegni con standalone e importandoli con \includegraphics è sempre al strada migliore; decisamente e senza incertezze.
            Sono sicuro che con tikspicture puoi risolvere il problema, ma poi dovresti lasciare perdere per no sprecare tempo a compilare e ricompilare gli stessi grafici, che, invece, tenuti a parte, ti permettono di compilare il resto del documento con tranquillità e senza avere la sensazione di perdere tempo.
            Sto componendo un testo che attualmente è di circa 160 pagine; non ho digrammi eseguiti con pgfplots, ma ho diverse figure e diagrammi di vario genere (per lo più sufficientemente semplici da poterli eseguire con l’ambiente picture, esteso con il pacchetto pict2e e con diverse macro che ho scritto apposta (per mia comodità, non per comodità del programma di composizione) e la compilazione dura circa tre secondi, compreso l’indice analitico alfabetizzato in background ma durante la stessa esecuzione di pdflatex. Con tempi di compilazione così brevi puoi permetterti di leggere e rileggere le bozze, di aggiungere e togliere interi capoversi, aggiustare quelle poche pagine un po’ lasche che richiedono qualche intervento manuale; ma se per ogni compilazione ci vogliono tre minuti, invece che tre secondi, come succedeva quando dovevo compilare un documento con una cinquantina di diagrammi composti con pgfplots, allora ti vengono brutti pensieri a proposito di pgfplots. Con standalone tutto si risolve benissimo.

          • #101866
            Up
            0
            Down
            ::



            @OldClaudio

            Ciao, scusa se ti rispondo solo ora.
            Premetto che poi il problema è stato risolto grazie ai vostri consigli, il documento è stato mandato in stampa e tutto è andato per il meglio. Quindi vi ringrazio davvero molto.
            Detto questo, sì, io compilo i “disegni” a parte, come documenti standalone, e li importo nel documento principale in un secondo momento, quando i disegni iniziano ad andare bene. In questo modo, poi, se devo ritoccare un singolo grafico posso farlo “a parte” e tutto è molto più semplice.

            A prescindere da questo aspetto, credo che ci vorrà ancora un po’ di tempo prima che io possa gestire per bene i discorsi sui millimetri e sui punti, ma è un altro discorso.

            Grazie ancora a tutti per i vostri aiuti.

          • #101867
            robitex
            Amministratore del forum
              Up
              0
              Down
              ::

              l3on4rdo” post=102195 @OldClaudio
              Ciao, scusa se ti rispondo solo ora.
              Premetto che poi il problema è stato risolto grazie ai vostri consigli, il documento è stato mandato in stampa e tutto è andato per il meglio. Quindi vi ringrazio davvero molto.
              Detto questo, sì, io compilo i “disegni” a parte, come documenti standalone, e li importo nel documento principale in un secondo momento, quando i disegni iniziano ad andare bene. In questo modo, poi, se devo ritoccare un singolo grafico posso farlo “a parte” e tutto è molto più semplice.

              A prescindere da questo aspetto, credo che ci vorrà ancora un po’ di tempo prima che io possa gestire per bene i discorsi sui millimetri e sui punti, ma è un altro discorso.

              Grazie ancora a tutti per i vostri aiuti.

              Ciao.
              Ci sono molti modi di affiancare grafici ma principalmente tre e sono descritti nel manuale di pgfplots.
              Ma in un modo diverso rispetto a come l’hai inteso tu:
              invece di creare due grafici separati e poi assemblarli, creare un unico oggetto in cui inserire più grafici.
              Se i grafici sono in qualche modo logicamente connessi, è naturale che anche il codice pgfplots per generarli rispetti ciò e permetta di affiancare plot in uno stesso “file standalone”.
              Congratulazioni per la consegna del lavoro.
              R.

          Visualizzazione 6 filoni di risposte
          • Devi essere connesso per rispondere a questo topic.

          Go to top