- Questo topic ha 24 risposte, 9 partecipanti ed è stato aggiornato l'ultima volta 13 anni, 7 mesi fa da
Marco87.
-
CreatoreTopic
-
17 Maggio 2010 alle 1:25 #45270::
Ciao,Ho appena finito questi grafici usando in modo incrociato il Matlab ed il pacchetto PGFplots.
Non ho usato la funzione al Matlab che si chiama matlab2tikz.m perché preferisco sempre avere il controllo al 100% di ciò che faccio, quindi per ogni grafico che devo disegnare, scrivo una funzione .m dedicata.Ecco i risultati:
Li posto qui perché spero che qui nel forum ci sia qualcuno che aprezzi il risultato finale, mentre sicuramente il professore che dovrà controllarmi la relazione non gli interessera assolutamente niente!!!
Visto l’ora, vado a letto!
Buona Notte
Michele
-
CreatoreTopic
-
AutoreRisposte
-
-
17 Maggio 2010 alle 10:44 #45271
-
17 Maggio 2010 alle 22:13 #45272::
Ciao,i grafici riguradano il dimensionamento a compressione dei pannelli dorsali del cassone alare di un velivolo.
Per quanto riguarda l’uso incrociato di di Matlab con PGFplots, semplicemente creo un file .m dove richiamo i dati finali dello studio numerico e li salvo in .dat per caricarli con il LaTex.
Poi nello stesso file .m creo direttamete il file .tex specifico per l’immagine che devo disegnare.
La domanda sorge spontanea: ma perché crei il file .tex dal Matlab?
Semplicemente perché quando uno richiama il file .dat con pgfplot nel modo seguente
`
\addplot[] table[x index=0,y index=1]{ .dat};
`non può richiamare in qualche modo un punto X che risulta essere una riga del file.dat, quindi, ad esempio, per mettere i valori delle line di livello nel secondo grafico, una volta ‘trovato’ al MatLab il punto dove posizionare il nodo e di quanto ruotarlo per renderlo tangente alla linea, scrivo al Matlab
`
fprintf(fid,['\\node[fill=white,font=\\tiny,inner sep=1pt,rotate=',num2str(ang),'] at (axis cs:',num2str(nodoX),','num2str(nodoY),'){',num2str(livello(ind)),'};\n']);
`Tutto qui.
Faccio così e non uso Matlab2tikz.m perché preferisco scrivere con mano cosa faccio.
Voi avete qualche altro modo con cui fate i grafici?
Questo è un’altro mio risultato:
Per il primo dei due, nel grafico ho disegnato dei pin creandoli come nodi con dentro il nome del flap e l’ \includegraphics che richiama il file .pdf con il profilo del flap.
In questo caso non ho saputo usare il comando per creare i pin con PGFplots.
Spero di aver risposto alle tue domande Ansys.
Saluti
Michele
-
18 Maggio 2010 alle 8:36 #45273
-
18 Maggio 2010 alle 14:31 #45274
-
18 Maggio 2010 alle 17:12 #45275::
Grazie ancora della risposta. Io non ho esempi o esperienze da riportare qui, in quanto:
1 – Sono un eterno neofiTeX (vorrei tanto studiare pgfplots o tikz o ancora pstricks) ;
2 – Non ho ancora scritto nulla di ufficiale da quando ho conosciuto LaTeX (circa un anno).
Il fatto è che sono curioso di sapere sempre nuove cose, anche perchè un giorno magari le metterò in pratica (chissà per la Tesi).ansys.
-
21 Maggio 2010 alle 18:29 #45276
-
22 Maggio 2010 alle 10:11 #45277::
Ciao,..bè… io conosco LaTex da quando sono all’università visto che le dispense dei professori su cui studiavo meglio erano scritte appunto in LaTex. Poi ho deciso di prendere la situazione in mano poche settimane prima di chiedere l’inutile tesi triennale, il quale scopo è stato quello di avermi fatto imparare il LaTex.
Successivamente ho scritto la relazione per l’esame di costruzione di macchine, con la quale ho conosciuto la grafica vettoriale(Inkscape+textetxt) e l’importantanza delle figure.
Poi leggendo gli articoli di Agostino De Marco ho scoperto Sketch e da li TikZ/PGF……e come se avessi scoperto l’america.
Ora sto scrivendo la relazione per l’esame di costruzioni aeronautiche dove ho fatto interamente tutte le figure con TikZ/PGF e PGFplots. Visto che io ed i miei colleghi facevamo degli errori nel codice al Matlab, e quindi la geometria del velivolo cambiava spesso, ho fatto delle figure parametrizzate con questa in modo che ogni volta che cambiava qualcosa bastava cambiare una riga di codice.
Il risultato è scaricabile quiVisto che poi i velivoli sono tre con geometrie diverse, è convenuto fare delle figure in questo modo.
Per quanto riguarda la domanda sul tempo di apprendimento di tale pacchetti, ti posso dire che ho veramente imparato ad usarlo da quando ho fatto queste figure e non quando ho in cominciato a fare delle prove a caso.
Ti mentirei se ti dicessi che ci vuole poco tempo, ma una volta raggiunta una buona conoscenza del tipo di figure che vuoi disegnare il problema è risolto.Una cosa importantissima non è tanto sapere conoscere i singoli comandi di TikZ(che sono veramente una enormità) ma sapere cosa il pacchetto può fare e cosa no, in modo da consultare in modo efficiente il manuale ed ovviare alle limitazioni con programmi esterni come Inkscape o MatLab.
Ciao spero di non aver annoiato nessuno e di essere stato chiaro.
Qualcuno di voi ha mai disegnato qualcosa al LaTex?
Me lo fate vedere?
-
25 Maggio 2010 alle 21:29 #45278
-
29 Maggio 2010 alle 9:12 #45279::
una volta finito l’ambiente axis o groupplots, inizio un’ambiente scope dove posso fare tutto quello che voglio per poi semplicemnete traslarlo dove c’è posto nel grafico.
Scusa l’ignoranza ma scope è un ambiente predefinito di Pgfplots? Ho cercato sul manuale ma non ho trovato informazioni soddisfacenti.
Potresti riportare qui un breve ecm?Grazie mille.
-
29 Maggio 2010 alle 18:08 #45280
-
30 Maggio 2010 alle 9:38 #45281::
Ciao.
prima di usare PGFplots bisognerrebe conoscere un po’ TikZ/PGF.
Vedi a pag. 118 di quest’ultimo.
Stai facendo qualche tentativo?
Saluti
MicheleCiao Michele a pagina 118 ho trovato questo :
`\begin{tikzpicture}
[fill=examplefill, % only sets the color
every path/.style={draw}] % all paths are drawn
\fill (0,0) rectangle +(1,1);
\shade (2,0) rectangle +(1,1);
\end{tikzpicture}` ma a cosa serve?
Ho creto un grafico di prova:
`\documentclass[a4paper]{article}
\usepackage[italian]{babel}
\usepackage{graphicx}
\usepackage{pgfplots,tikz}
\pgfplotsset{width=7cm,compat=1.3}
\pagestyle{empty}
\begin{document}
\begin{tikzpicture}
\begin{axis}[xmax=6, ymax=40,
xlabel=$x$,
ylabel={$f(x) = x^2 – x +4$}
]
% use TeX as calculator:
\addplot {x^2 – x +4};
\end{axis}\tikzstyle{every node}=[fill=white,
draw=black,
font=\footnotesize]
\begin{scope}[style=every node]
\node {Hello};
\node [shape border uses incircle] at (2,4) {World!};
\end{scope}
\end{tikzpicture}
\end{document}` da manuale di tikz:
se volessi creare un rettangolo che abbia vertice iniziale nel punto (2,30) e vertice finale (6,40) con informazioni interne come si può fare?
-
30 Maggio 2010 alle 11:20 #45282::
Ciaoscusa non ti ho detto che mi riferivo al manuale di TikZ/PGF della versione CVS e non della 2.00.
Per scaricare l’ultima versione di Tikz/PGF guarda qui.
La soluzioe che ti propongo è questa:
`
\documentclass[a4paper]{article}
\usepackage[italian]{babel}\usepackage{graphicx}
\usepackage{pgfplots,tikz}
\pgfplotsset{width=7cm,compat=1.3}\pagestyle{empty}
\begin{document}\begin{tikzpicture}
\begin{axis}[
xmax = 6,
ymax = 40,
xlabel = $x$,
ylabel = {$f(x) = x^2 – x +4$},
x = .5cm,
y = 1mm,
]\addplot {x^2 – x +4};
\node[
anchor = north west,
draw = black,
fill = white,
minimum height = 1cm,
minimum width = 2cm] at (axis cs:2,40){Sol.1};
\end{axis}
\end{tikzpicture}
\end{document}
`Molto probabilmente si potrebbe fare meglio ma è un buon inizio.
Da pagina 221 del manuale di PGFplots probabilmente c’è qualche comando base che ti permette di fare queste cose con maggiore “controllabilità”, ma non ho mai indagato più di quanto ho fatto per risponderti.
Saluti
-
31 Maggio 2010 alle 10:32 #45283
-
31 Maggio 2010 alle 15:02 #45284::
Il codice che hai fornito sembra essere perfetto. Nel riquadro si può andare a capo?
Il manuale CVS è circa 200 pagine in più a quello mio. Cosa ha in più?una bellissima feature trovata su texample.net e’ che nella label del nodo puoi schiaffarci una intera minipage!
in questa maniera puoi metterci dentro (quasi) di tutto!!
-
31 Maggio 2010 alle 17:09 #45285::
Il codice che hai fornito sembra essere perfetto. Nel riquadro si può andare a capo?
Bo!! Trova tu la risposta e fammi sapere 😉
Il manuale CVS è circa 200 pagine in più a quello mio. Cosa ha in più?
Ha un po’ di librerie in più, tra le quali quella necessaria per trovare le intersezioni tra due curve qualsiasi. Senza questa non avrei potuto fare molti disegni tra cui quello del nvelivolo intero mostrato in questo topic.
Non ti scoraggiare, continua ad impararlo….i risultati saranno ottimi.
Saluti
Michele
-
30 Luglio 2010 alle 15:30 #45286::
Salve a tutti.
Dopo un pò di tempo propongo un diagramma frutto dello studio,di codici e del manuale, del pacchetto pgfplots. I dati per costruire il grafico sono tanti (1001 x 7) e pertanto non li allego (magari se qualcuno li vuole posso inviarli via mail).
Il file contenente le coordinate, coordinate.dat, è stato creato in Matlab.
Lascio qui un’anteprima del risultato:

e questo è il codice:
`\documentclass[draft,a4paper,10pt]{article}\usepackage[margin=2cm,centering]{geometry}
\usepackage{amsmath,amsfonts,amssymb}
\usepackage{pgfplots}\begin{document}
\begin{tikzpicture}
\pgfplotsset{compat=1.3,width=14cm, height=12cm}
\begin{axis}[xmin=0,%
xmax=100,%
ymin=0,%
ymax=100,%
xlabel=$\lambda$,%
ylabel=$\sigma_{\text{cr}}$,%
grid=major]\foreach \s in {ss20,ss30,ss40,ss50,ss60,ss70,ss80} {
\addplot[] table[x=lambda, y=\s] {coordinate.dat};
};\draw [black,fill=white]
(axis cs:60,50) rectangle (axis cs:100,100) node[midway] {
\begin{minipage}{4.5cm}\scriptsize
\bfseries{Formula di Eulero ($\lambda \geq \lambda_\text{t}$)}
\begin{equation*}
\sigma_\text{cr}=\dfrac{\pi^2 E}{\lambda^2}
\end{equation*}
\bfseries{Formula di Johnson ($\lambda < \lambda_\text{t}$)} \begin{equation*} \sigma_\text{cr}=\sigma_\text{s}\Biggl(1-\dfrac{\lambda^2}{4\pi^2E}\Biggr) \end{equation*} \bfseries{Snellezza di transizione} \begin{equation*} \lambda_\text{t}=\pi\sqrt{\dfrac{2E}{\sigma_\text{s}}} \end{equation*} \end{minipage} }; \end{axis} \end{tikzpicture} \end{document}` Suggerimenti e (sopratutto) correzioni sono sempre gradite. Ciao, ansys. -
30 Luglio 2010 alle 16:44 #45287
-
29 Gennaio 2013 alle 12:20 #45288::
Ciao, i tuoi grafici sono savvero belli!sto valutando di passare da gnuplot a PGFPlot per graficare i miei dati sperimentali, gnuplot è comodo dal momento che è possibile riportare più serie di dati nello stesso file.txt alle quali poi si può fare riferimento con “using 1:2 ” etc; in PGFPlot esiste qualcosa di analogo? Non ho ben capito come organizzare i miei dati per ottenre più curve sullo stesso grafico, riportare tutte le coordinate porterebbe ad un file lunghissimo così come anche sarebbe tedioso creare più file a cui fare riferimento!
Suggerimenti?grazie, Mari
-
29 Gennaio 2013 alle 12:30 #45289::
MARIL” post=81651Ciao, i tuoi grafici sono savvero belli!
sto valutando di passare da gnuplot a PGFPlot per graficare i miei dati sperimentali, gnuplot è comodo dal momento che è possibile riportare più serie di dati nello stesso file.txt alle quali poi si può fare riferimento con “using 1:2 ” etc; in PGFPlot esiste qualcosa di analogo? Non ho ben capito come organizzare i miei dati per ottenre più curve sullo stesso grafico, riportare tutte le coordinate porterebbe ad un file lunghissimo così come anche sarebbe tedioso creare più file a cui fare riferimento!
Suggerimenti?grazie, Mari
Si, vale la pena provare con pgfplots. Solitamente la qualità è eccellente rispetto agli altri tool.
Se usi gnuplot puoi effettuare i calcoli numeri con esso, direttamente all’interno dell’ambinete axis.
Per plottare più curve, inserisci semplicemente più \addplot.La documentazione del pacchetto si raggiunge dando da terminale il comando “texdoc pgfplots”.
In italiano esiste l’articolo su Ars (credo ormai liberamente scaricabile) e la guida di Pantieri.
Saluti.
R.
-
29 Gennaio 2013 alle 12:44 #45290::
MARIL” post=81651Ciao, i tuoi grafici sono savvero belli!
sto valutando di passare da gnuplot a PGFPlot per graficare i miei dati sperimentali, gnuplot è comodo dal momento che è possibile riportare più serie di dati nello stesso file.txt alle quali poi si può fare riferimento con “using 1:2 ” etc; in PGFPlot esiste qualcosa di analogo? Non ho ben capito come organizzare i miei dati per ottenre più curve sullo stesso grafico, riportare tutte le coordinate porterebbe ad un file lunghissimo così come anche sarebbe tedioso creare più file a cui fare riferimento!
Suggerimenti?grazie, Mari
Per riportare più curve basta inserire più [tt]\addplot[/tt] nello stesso ambiente [tt]axis[/tt]. Il mio consiglio è di produrre i tuoi dati sperimentali in diversi file (ad esempio [tt].dat[/tt]) e di richiamarli con la sintassi `
\addplot[opzioni]
table[x={titolo-colonna-x-nel-file-dat},y={titolo-colonna-y-nel-file-dat}]
{file.dat};
` Un esempio minimo: `\documentclass{article}
\usepackage{filecontents}\begin{filecontents}{dati1.dat}
asse-x asse-y
0 0.2
1 1
2 1.2
3 2
\end{filecontents}\begin{filecontents}{dati2.dat}
x y
0 2.2
1 3
2 4.2
3 5
\end{filecontents}\usepackage{pgfplots}
\pgfplotsset{compat=1.7} % versione corrente: usare quella installata
% consultando la documentazione del pacchetto per reperirla\begin{document}
\centering
\begin{tikzpicture}
\begin{axis}\addplot[red] table[
x = asse-x,
y = asse-y]{dati1.dat};\addplot[blue] table[
x = x,
y = y]{dati2.dat};\end{axis}
\end{tikzpicture}
\end{document}
` Dimenticavo: esiste uno script matlab, matlab2tikz, che esporta direttamente in codice TikZ il grafico; tu devi solo far girare lo script e copiare il risultato che ottieni (un file [tt].tikz[/tt]) nel documento principale. La soluzione “a mano” mi è venuta per prima perché è quanto ho fatto per la mia tesi, ma in quel caso i risultati erano prodotti da simulazioni non in matlab.. altrimenti avrei usato lo script. 🙂Ciao
Claudio
-
30 Gennaio 2013 alle 9:48 #45291::
cfiandra” post=81653
Per riportare più curve basta inserire più [tt]\addplot[/tt] nello stesso ambiente [tt]axis[/tt]. Il mio consiglio è di produrre i tuoi dati sperimentali in diversi file (ad esempio [tt].dat[/tt]) e di richiamarli con la sintassigrazie per le dritte, solo era proprio questo che volevo evitare, vale a dire creare più file .dat, cosa invece che con gnuplot posso evitare!
Per quanto riguarda matlab, essendo una beginner con tutto (sia latex che gnuplot) di andare a scaricare un ulteriore programma da imparare ad usare in questo momento non saprei, dipende dal rapporto “tempo richiesto per imparare” su “velocità ottenimento grafici” !!
Grazie e buona giornata, Mari
-
30 Gennaio 2013 alle 10:05 #45292::
Trovata la soluzione! Era più semplice di quanto pensassi! ecco l’esempio!
`\documentclass{article}
\usepackage{filecontents}\begin{filecontents}{dati.dat}
a b c d e f g h i
0 3.4155 4.644 1.0695 1.0275 12.919 13.24 2.858 2.9545
1.42 3.409 4.2105 1.3565 1.195 12.422 13.387 2.5955 2.9875
2.84 3.479 4.596 1.32 1.1065 12.8945 13.498 2.674 2.7915
4.26 7.983 2.375 6.39 4.272 10.368 2.452 5.404 6.937
5.68 0.6015 2.0825 2.218 3.6255 2.623 3.7575 3.588 3.3695
7.1 0.4115 0.6635 1.931 2.2585 1.813 1.857 2.917 2.486
8.52 0.362 0.378 2.2515 2.193 1.726 1.947 3.2075 2.864
9.94 0.66 0.755 2.283 2.179 1.9455 1.734 2.8045 3.0135
11.36 0.5265 0.4595 2.1155 2.3535 1.8705 2.28 3.1175 3.044
12.78 0.48 0.785 2.209 2.148 1.9295 2.225 2.626 2.8665
14.2 0.242 0.5245 2.528 2.163 2.084 1.942 2.9865 3.111
15.62 0.3055 0.5345 2.5715 2.4265 1.772 2.2065 3.1615 3.1305
17.04 0.5905 0.491 2.3095 2.598 1.779 2.0145 3.22 2.978
18.46 0.7065 0.838 2.614 2.55 2.0725 2.273 3.311 3.0525
19.88 0.264 0.546 2.85 2.423 1.9485 2.25 3.576 3.1805
21.3 0.6125 0.5925 2.254 2.765 2.2555 2.268 3.493 3.28
22.72 0.7415 0.496 2.4645 2.4585 1.941 1.9985 3.66 3.146
24.14 0.8015 0.826 2.871 2.584 2.0885 1.9845 3.9915 3.494
25.56 0.756 0.6935 2.542 2.8065 2.0545 2.5015 3.6105 3.441
26.98 0.795 0.6785 2.686 2.5985 1.934 2.263 3.9825 3.5835
28.4 0.7015 0.744 2.9675 2.9125 2.249 2.436 3.907 3.5465
29.82 0.6835 0.739 2.721 2.8 2.215 2.1845 3.93 3.503
31.24 0.6135 0.7735 2.766 3.021 1.999 2.4425 4.103 3.7565
32.66 0.6565 0.602 2.664 3.2475 2.4185 3.004 4.051 3.9415
34.08 0.5875 0.4105 2.65 3.1305 2.573 2.5335 4.1905 3.496
35.5 0.672 0.619 2.8155 2.9625 1.8805 2.6275 4.282 3.3955
36.92 0.61 0.803 2.9695 3.01 2.3745 2.3795 4.346 4.0415
38.34 0.6625 0.6075 2.8155 3.034 2.4495 2.239 4.1875 4.255
39.76 0.861 0.6695 2.746 3.0385 2.373 2.6935 4.491 4.073
41.18 0.6365 0.6765 2.8065 3.3195 2.521 2.6885 4.3865 4.277
42.6 0.6615 1.0885 3.174 3.354 2.267 2.618 4.654 4.202
44.02 0.719 0.92 3.0335 2.8835 2.5035 2.652 4.6245 4.0305
45.44 1.008 1.2055 2.9865 3.2295 2.288 2.6995 4.839 4.0305
46.86 0.82 1.0055 3.347 3.26 2.632 2.6745 4.587 4.16
48.28 0.813 1.0065 3.282 3.261 2.581 2.9665 4.5485 4.6345
49.7 0.9085 0.7655 3.018 3.1945 2.8305 3.012 4.671 4.1045
51.12 0.8345 0.9945 3.2095 3.3925 2.6345 2.6135 4.8765 4.456
52.54 0.7935 0.802 3.466 3.146 2.5745 2.8505 5.097 4.486\end{filecontents}
\usepackage{pgfplots}
\pgfplotsset{compat=1.7} % versione corrente: usare quella installata
% consultando la documentazione del pacchetto per reperirla\begin{document}
\centering
\begin{tikzpicture}
\begin{axis}\addplot[purple] table[
x = a,
y = e]{dati.dat};\addplot[blue] table[
x = a,
y = b] {dati.dat};\addplot[red] table[
x = a,
y = c] {dati.dat};\addplot[green] table[
x = a,
y = d] {dati.dat};\end{axis}
\end{tikzpicture}
\end{document}`ah che felicità!
-
30 Gennaio 2013 alle 10:17 #45293::
Molto bene!
Tieni conto che puoi usare la classe standalone al posto di article per produrre il pdf del grafico già ritagliato che poi inserirai nel testo come immagine vettoriale.
Serve solo il coordinamento tra i font e puoi adottare la separazione tra la produzione dei grafici con quella del documento principale, di solito utile qualndo le dimensioni del progetto crescono.
R.
-
30 Gennaio 2013 alle 14:05 #45294::
Ciao Mari,complimenti per la scelta di usare [tt]pgfplots[/tt] e per la soluzione adottata. Se nel tuo documento hai grafici con tanti punti, potresti incorrere nel superamento della massima memoria disponibile al pacchetto per tracciare il grafico. In questa discussione, grazie alle indicazioni di Enrico, si mostra come aumentare tale memoria sia su un sistema Ubuntu sia su Windows.
Ciao e buon lavoro con [tt]pgfplots![/tt]
Marco.
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.


