- Questo topic ha 7 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 11 anni fa da
Matteo.
-
CreatoreTopic
-
12 Agosto 2015 alle 21:26 #102848::
Buongiorno a tutti,
oggi stavo cercando di introdurre un grafico su un diagramma polare, la formula è:[attachment:1]C:\fakepath\FA.jpg[/attachment]
La quale di fatto è un’epicicloide e dovrebbe generare una curva come quella in rosso:
[attachment:2]C:\fakepath\2015-08-13 01.12.45.jpg[/attachment]
Pertanto ho scritto:
`
\begin{figure}[h]
\centering
\begin{tikzpicture}
\begin{polaraxis}
[xmin=290, xmax=430,
ymin=1, ymax=sqrt(3),
xtick={290,300,…,430},
yticklabels=\empty
]
\addplot+[mark=none, domain=1:sqrt(3), samples=30]
{sqrt(3)*atan(sqrt((x^2-1)/(3-x^2)))-atan(sqrt(3)*sqrt((x^2-1)/(3-x^2)))};\end{polaraxis}
\end{tikzpicture}
\end{figure}
`Mi sono però accorto che l’ambiente polar per impostazione predefinita usa i gradi sessadecimali e non i radianti, così avevo pensato di riscrivere la funzione come:
`
\addplot+[mark=none, domain=1:sqrt(3), samples=30]
{deg(sqrt(3)*atan(sqrt((x^2-1)/(3-x^2)))-atan(sqrt(3)*sqrt((x^2-1)/(3-x^2))))};
`ma in questo caso mi restituisce un errore:
! Dimension too large.
\pgf@xx l.141 \end{polaraxis}
Se ci fosse qualcuno che potesse indicarmi il mio errore sarebbe molto bello.
Attachments:
You must be logged in to view attached files. -
CreatoreTopic
-
AutoreRisposte
-
-
13 Agosto 2015 alle 4:35 #102849::
schwarz89it” post=102798Buongiorno a tutti,
oggi stavo cercando di introdurre un grafico su un diagramma polare, la formula è:[attachment:1]C:\fakepath\FA.jpg[/attachment]
La quale di fatto è un’epicicloide e dovrebbe generare una curva come quella in rosso:
[attachment:2]C:\fakepath\2015-08-13 01.12.45.jpg[/attachment]
Pertanto ho scritto:
`
\begin{figure}[h]
\centering
\begin{tikzpicture}
\begin{polaraxis}
[xmin=290, xmax=430,
ymin=1, ymax=sqrt(3),
xtick={290,300,…,430},
yticklabels=\empty
]
\addplot+[mark=none, domain=1:sqrt(3), samples=30]
{sqrt(3)*atan(sqrt((x^2-1)/(3-x^2)))-atan(sqrt(3)*sqrt((x^2-1)/(3-x^2)))};\end{polaraxis}
\end{tikzpicture}
\end{figure}
`Mi sono però accorto che l’ambiente polar per impostazione predefinita usa i gradi sessadecimali e non i radianti, così avevo pensato di riscrivere la funzione come:
`
\addplot+[mark=none, domain=1:sqrt(3), samples=30]
{deg(sqrt(3)*atan(sqrt((x^2-1)/(3-x^2)))-atan(sqrt(3)*sqrt((x^2-1)/(3-x^2))))};
`ma in questo caso mi restituisce un errore:
! Dimension too large.
\pgf@xx l.141 \end{polaraxis}
Se ci fosse qualcuno che potesse indicarmi il mio errore sarebbe molto bello.
Ciao,
pgfplots pensa anche a questo. Infatti esiste l’opzione data cs=polarrad.
Riporta però non tanto l’immagine quanto il codice dell’esempio minimo compilabile:
`
\documentclass{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{polar}\pgfplotsset{compat=1.12}
\begin{document}
\begin{tikzpicture}
\begin{polaraxis}[
xmin=290, xmax=430,
ymin=1, ymax=sqrt(3),
xtick={290,300,…,430},
yticklabels=\empty
]\addplot+[data cs=polarrad,mark=none, domain=1:sqrt(3), samples=300]
{sqrt(3)*atan(sqrt((x^2-1)/(3-x^2)))-atan(sqrt(3)*sqrt((x^2-1)/(3-x^2)))};\end{polaraxis}
\end{tikzpicture}
\end{document}
`
R.
-
13 Agosto 2015 alle 7:58 #102850::
\documentclass[a4paper,11pt,twoside,openright,final]{book}
\usepackage[italian]{babel}
\usepackage{graphicx}
\graphicspath{{immag/}}
\usepackage{subfig}
\usepackage{indentfirst}
\usepackage{amsmath}
\usepackage[latin1]{inputenc}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{longtable}
\usepackage{lscape}
\usepackage{verbatim}
\usepackage{pdfpages}
\usepackage{xkeyval}
\usepackage{siunitx}
\sisetup{output-decimal-marker={,}}
\usepackage{dcolumn}
\usepackage[margin=10pt,font=small,labelfont=bf,labelsep=endash,format=hang,justification=raggedright]{caption}
\captionsetup{position=bottom}
\usepackage{textcomp}
\usepackage{lipsum}
\usepackage[italian]{varioref}\usepackage[pdfborder={0 0 0}]{hyperref}
\hypersetup{pdfborder=0 0 0}\usepackage{pgfplots,relsize,pgfplotstable,lmodern,pgfkeys, pgfmath}
\pgfplotsset{compat=1.3}
\pgfkeys{
/pgf/number format/.cd,
use comma
}
\usetikzlibrary{plotmarks}
\usetikzlibrary{positioning}
\usepgfplotslibrary{polar}\begin{document}
\chapter{Introduzione}\begin{figure}[h]
\centering
\begin{tikzpicture}
\begin{polaraxis}
[xmin=290, xmax=430,
ymin=1, ymax=sqrt(3),
xtick={290,300,…,430},
yticklabels=\empty
]
\addplot+[mark=none, domain=1:sqrt(3), samples=30]
{sqrt(3)*atan(sqrt((x^2-1)/(3-x^2)))-atan(sqrt(3)*sqrt((x^2-1)/(3-x^2)))};\end{polaraxis}
\end{tikzpicture}
\end{figure}\end{document}
Come fai giustamente osservare, il pacchetto si fa carico anche del probema, gradi/radianti, ma anche usando data cs=polarrad, cosa che avevo anche fatto, il risultato non è quello che mi aspetto. Qui comunque c’è tutto il preambolo che uso oltre all’esempio minimo.
-
22 Agosto 2015 alle 16:32 #102851::
Dopo ulteriori tentativi andati a vuoto, ho deciso di installare gnuplot, in modo da delegare a lui la parte dei calcoli numerici, così ho sostituito la riga`
\addplot [data cs=polarrad,mark=none, domain=1:sqrt(3), samples=300]
{deg(sqrt(3)*atan(sqrt((x^2-1)/(3-x^2))))-deg(atan(sqrt(3)*sqrt((x^2-1)/(3-x^2))))};
`
con
`
\addplot gnuplot [data cs=polarrad,mark=none, domain=1:sqrt(3), samples=300]
{deg(sqrt(3)*atan(sqrt((x^2-1)/(3-x^2))))-deg(atan(sqrt(3)*sqrt((x^2-1)/(3-x^2))))};
`pensavo che fosse tutto risolto, ma improvvisamente il problema nuovo che sorge è che si deve attivare (credo si dica così) la -shell-escape.
Dati che potrebbero essere utili:
- Uso TeXworks di MikTeX versione 2.9.4248
- Quando compilo uso PdflateX+MakeIndex+BibTeX
- Il preambolo riportato non è stato modificato
Prima di annoiarvi ho cercato un po’ in rete per capire dove piazzare questo comando strano che permette il lancio di programmi e da quello che ho letto esiste la soluzione che funzionerebbe solo per un dato file e uno (sconsigliato) che rende “permanente” la capacità di latex di lanciare programmi.
Pur non essendo raccomandata, se non è complicato, preferirei percorrere questa strada, perché mi è più comoda.Specificata la mia richiesta, aggiungo anche che, sempre leggendo nei vari forum, ho trovato che dovevo andare su Modifica>Preferenze Selezionare Composizione e da Strumenti di Processo con doppio clic su PdfLaTeX sostituire alla voce Programma miktex-pdftex.exe con miktex-pdftex.exe -shell-escape.
Ho provato, ma il messaggio rimane, lo riporto:
! Package pgfplots Error: Sorry, the gnuplot-result file ‘ADis.pgf-plot.table’
could not be found. Maybe you need to enable the shell-escape feature? For pdfl
atex, this is ‘>> pdflatex -shell-escape’. You can also invoke ‘>> gnuplot.gnuplot’ manually on the respective gnuplot file..
Prima di gettare la spugna ho anche provato con due trattini, senza spazio e anche aggiungendo la stessa dicitura “-shell-escape” tra gli argomenti.
Ora non so più cosa fare, e il mio fegato è ingrossato per la rabbia. Mi appello a voi sperando di ottenere un chiarimento; se mancassero ancora dati alla mia descrizione vi prego di chiedermeli. Un sentito ringraziamento a chiunque mi risponderà.
-
22 Agosto 2015 alle 20:04 #102852::
Ci dici che usi MiKTeX, ma non ti è venuto in mente di leggere la documentazione di MiKTeX stesso; avresti visto che la funzionalità shell escape della distribuzione TeX Live (che vale per tutte le piattaforme, Windows compresa e per questo la suggeriamo sempre come distribuzione da installare) si chiama -enable-write18 (forse con due trattini in principio, invece di nao solo); siccome non dispongo più di una versione di MiKTeX vado a memoria.
Ma a scanso di equivoci e di mia scarsa memoria, dal bottone Avvio di Windows puoi avere la lista dei programmi da attivare; se clicchi sulla voce MiKTeX dovresti trovarti un certo numero di scelte successive finché puoi cliccare su MiKTeX Help; lì puoi leggere come attivare lo shell escape o abilitare il write18.Il consiglio di non tenere quella funzionalità abilitata in modo permanente è valido, specialmente per le piattaforme Windows; malgrado esista malware per tutte le macchine il bersaglio preferito dai distributori di malware sono i sistemi operativi Windows che sono intrinsecamente meno protetti dei sistemi Unix e Linux.
Capisco il tuo desiderio di non dovere andare a leggere la documentazione di MiKTeX ogni volta che devi far girare gnuplot; allora ti suggerisco una scorciatoia; il tuo shell editor comprende una serie di bottoni (icone) o voci di menù che permettono di far fare allo a TeX alcune azioni, tipicamente salvare il file in lavorazione e lanciare uno dei programmi di composizione con le opzioni giuste per un dato compito. Definiscine un altro, per esempio
[tt]pdflatex -errorstopmode -synctex=1 -enable-write18[/tt]
Verifica sulla documentazione di MiKTeX che le opzioni e la loro sintassi sia proprio quella che ho scritto; sostituisci la parte <...> con lo specifico segnaposto usato da MiKTeX per indicare il file da compilare. Fatto questo salva questo comando e assegnalo ad un nuovo bottone o a una voce di menù dal nome mnemonico, per esempio, pdflatexW18. In questo modo, invece di cliccare sul bottone pdflatex o di selezionare la voce di menù pdflatex, clicca su ciò che che hai chiamanto pdflatexW18 e non ci pensi più, nel senso che quel bottone ti permette di eseguire lo shell escape e di eseguire gnuplot o qualunque altro programma che tu voglia indicare a pgfplots.Nota che almeno TeXLive nel suo file di configurazione ha una breve lista di file che può eseguire liberamente senza bisogno di attivare lo shell escape; forse anche MiKTeX contiene questa lista; fra i programmi eseguibili liberamente c’è anche makeindex. se tu nel preambolo del tuo documento invece di usare il pacchetto makeidx usassi il pacchetto imakeidx o il pacchetto indextools, potresti compilare l’indice analitico senza battter ciglio, perché pdflatex ci penserebbe lui stesso; leggi la documentazione di questi due pacchetti, quasi identici (il secondo è un fork del primo); il secondo risolve un problema di compatibilità per i testi letterari o le edizioni critiche che invece sarebbe presente nel primo. Non ho elementi per confermare questi fatti perché non compongo edizioni critiche. Io uso sempre imakeidx e senza mai cliccare sul bottone makeindex ho sempre da uno a sei indici analitici composti in automatico e immediatamente presenti nel documento che compongo.
Lo stesso vale per gnuplot; leggi la documentazione di MiKTeX e vedrai che il problema risulta superato in un attimo.
-
23 Agosto 2015 alle 2:01 #102853::
Dopo aver passato tutta la notte a provare, seguendo i saggi suggerimenti di @OldClaudio, getto la spugna. Mi arrendo alla mia incapacità!
Se mai ci fosse qualche padovano o qualcuno che bazzica per l’università, mi scriva pure che possiamo trovarci (Biblioteca di Ingegneria) per fare un esempio. NON sono nemmeno sicuro che una tale proposta sia consentita dal regolamento quindi non vi annoio oltre.
-
23 Agosto 2015 alle 6:01 #102854::
schwarz89it” post=102908Dopo aver passato tutta la notte a provare, seguendo i saggi suggerimenti di @OldClaudio, getto la spugna. Mi arrendo alla mia incapacità!
Se mai ci fosse qualche padovano o qualcuno che bazzica per l’università, mi scriva pure che possiamo trovarci (Biblioteca di Ingegneria) per fare un esempio. NON sono nemmeno sicuro che una tale proposta sia consentita dal regolamento quindi non vi annoio oltre.Ciao.
Vediamo di fare le cose passo passo:
1 – Copia questo codice in un file di testo di nome “test.tex” in una cartella di tuo comodo
`\documentclass{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{polar}\begin{document}
\begin{tikzpicture}
\begin{polaraxis}[
xmin=290, xmax=430,
ymin=1, ymax=3,
xtick={290,300,…,430},
yticklabels=\empty
]\addplot gnuplot [
data cs=polarrad,
mark=none,
domain=1:sqrt(3),
samples=300]
{sqrt(3)*atan(sqrt((x^2-1)/(3-x^2)))-atan(sqrt(3)*sqrt((x^2-1)/(3-x^2)))};\end{polaraxis}
\end{tikzpicture}
\end{document}`2 – Apri una finestra di console (finestra DOS se sei in Windows) e posizionati con il comando cd nella cartella dove hai messo il file TeX.
Per esempio se la cartella è sul Desktop digiterai il comando:
`> cd percorso\alla\mia\cartella`3 – comando di compilazione
Nella stessa finestra digita il comando di compilazione:
`pdflatex -shell-escape test.tex`4 – Adesso puoi aprire il pdf compilato per controllare il risultato.
Come puoi controllare nella cartella, il pacchetto pgfplots ha provveduto a costruire il file “test.pgf-plot.gnuplot” con i comandi per gnuplot e a lanciarlo.
Gnuplot ha generato il file “test.pgf-plot.table” con i dati numerici.
A questo punto torna in scena pgfplots che legge questo file e esegue il plot.Questi passaggi sono quelli base manuali e possono essere automatizzati in vari modi.
Se non cambia la funzione da plottare ma solo le proprietà del grafico e gnuplot ha già generato le coordinate corrispondenti, allora è sufficiente una normale compilazione senza shell-escape.Nota che ho tolto la funzione deg() che avevi inserito perché non è presente in Gnuplot e dovresti inserire piuttosto la conversione con il fattore 180/pi.
Tuttavia più che con pfgplots il problema a me sembra essere più matematico che grafico per come la funzione viene disegnata.
Qualcosa sul dominio o altro, per esempio proprio il discorso tra gradi e radianti sulla variabile indipendente.
R.
-
23 Agosto 2015 alle 13:05 #102855::
Ciao @robitex,
ho provato come mi hai detto, pgfplots crea correttamente il file test.pgf-plot.gnuplot, e lancia il programma perché il file log lo riporta, ma per essere onesto gnuplot non crea il corrispettivo *.table che tu invece ottieni.
Credevo lo salvasse di default in un’altra cartella, ma cercandolo non si trova. Qui l’estratto del log:Package pgfplots Warning: running in backwards compatibility mode (unsuitable t
ick labels; missing features). Consider writing \pgfplotsset{compat=1.12} into
your preamble.
on input line 5.runsystem(gnuplot AALL.pgf-plot.gnuplot)…executed.
! Package pgfplots Error: Sorry, the gnuplot-result file ‘AALL.pgf-plot.table’
could not be found. Maybe you need to enable the shell-escape feature? For pdfl
atex, this is ‘>> pdflatex -shell-escape’. You can also invoke ‘>> gnuplot.gnuplot’ manually on the respective gnuplot file.. See the pgfplots package documentation for explanation.
Type Hfor immediate help.
…l.21 …sqrt(3)*sqrt((x^2-1)/(3-x^2))))*(180/pi)};
Non arrendendomi, ho preso i dati contenuti in test.pgf-plot.gnuplot e li ho lanciati manualmente aprendo gnuplot, a quel punto il file *.table compare correttamente.
Ho deciso che non indagherò oltre né continuerò per ora a cercare di usare questa strada perché di tempo ne ho sprecato a sufficienza, inoltre detesto annoiare la gente con i miei problemi troppo a lungo.
Tuttavia ho cercato di capire perché il grafico risultasse sbagliato e leggendo ancora una volta la guida di pgfplots si trova che nel sistema polar i punti vanno passati a latex nella forma (angolo, raggio) mentre nel file test.pgf-plot.table la prima colonna è quella dei raggi e la seconda quella dei gradi ovvero con l’ordine che ho sempre visto usare in tutti i libri di testo di matematica.Quindi credo che per il momento tornerò a usare Excel per il calcolo dei punti e poi li esporterò in un file *.dat.
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.