PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : pgfplot manuel Gitternetzlinien zeichnen?



J0Sch
24-02-2012, 14:23
Hallo,

ich bin gerade dabei ein doppelt logarithmisches Diagramm zu zeichnen. Ich zeichne über grid=both ein für mich gutes Gitternetz. Sobald ich über
xtick={} oder ytick={} meine Achsenbeschritung anpasse, werden Gitternetzlinien nur noch dort gezeichnet wo sich auch eine Achsenbeschriftung befindet.
Ich hätte gern auch dort eine Gitternetzlinie an der sich keine Achsenbeschriftung befindet.

Beispiel
\documentclass[11pt, oneside, a4paper]{scrreprt}

\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{amsmath}
\usepackage{tikz}
\usepackage{pgfplots}

\begin{document}

\begin{figure}
\centering
\footnotesize
\begin{tikzpicture}[trim axis left,trim axis right]
\begin{loglogaxis}[
title=\Large{\textbf{test}},
xmin=10, xmax=2000,
xtick={20,50,100,200,500,1000},
xticklabel={%
\pgfplotsset{/pgf/fpu}% <-- erweiterter zahlenbereich
\pgfmathparse{exp(\tick)}% exponentiere den exponent
\pgfmathprintnumber[fixed,precision=0]{\pgfmathresult}% formatiere die zahl
},
ymin=0.1, ymax=10,
% ytick={0.5,1,2,3,4,5,6,7},
yticklabel={%
\pgfplotsset{/pgf/fpu}% <-- erweiterter zahlenbereich
\pgfmathparse{exp(\tick)}% exponentiere den exponent
\pgfmathprintnumber[fixed,precision=1]{\pgfmathresult}% formatiere die zahl
},
width={10cm},
height={10cm},
xlabel=\Large{x},
ylabel=\Large{y},
grid=both,
legend style={
at={(0.005,0.90)},
anchor=west,
},
]
\addplot[black]coordinates{
(32.406,6.277)(687.932,0.204)
};

\addplot[black]coordinates{
(268.054,7.144)(1186.980,0.263)
};

\end{loglogaxis}
\end{tikzpicture}
\end{figure}

\end{document}

Viele Grüße,
J0Sch

esdd
24-02-2012, 21:13
Hallo,

hier ist ein Vorschlag, wie man zuerst das Gitter zeichnen kann:

\documentclass{scrreprt}

\usepackage{pgfplots}

\begin{document}

\begin{tikzpicture}[trim axis left,trim axis right]
\footnotesize
\pgfplotsset{mygrid/.style={%
xmin=10, xmax=2000,%
ymin=0.1, ymax=10,%
width={10cm}, height={10cm},%
grid=both}%
}
%
\begin{loglogaxis}[mygrid]%
\pgfplotsset{/pgfplots/log number format basis/.code 2 args={}}
\end{loglogaxis}
%
\begin{loglogaxis}[
mygrid,
title=\Large{\textbf{test}},
xtick={20,50,100,200,500,1000},
xticklabel={%
\pgfplotsset{/pgf/fpu}% <-- erweiterter zahlenbereich
\pgfmathparse{exp(\tick)}% exponentiere den exponent
\pgfmathprintnumber[fixed,precision=0]{\pgfmathresult}% formatiere die zahl
},
ytick={0.5,1,2,3,4,5,6,7},
yticklabel={%
\pgfplotsset{/pgf/fpu}% <-- erweiterter zahlenbereich
\pgfmathparse{exp(\tick)}% exponentiere den exponent
\pgfmathprintnumber[fixed,precision=1]{\pgfmathresult}% formatiere die zahl
},
xlabel=\Large{x},ylabel=\Large{y},
legend style={at={(0.005,0.90)},anchor=west},
]
\addplot[black]coordinates{(32.406,6.277)(687.932,0.204)};
\addplot[black]coordinates{(268.054,7.144)(1186.980,0.263)};
\end{loglogaxis}
\end{tikzpicture}

\end{document}
Gruß
Elke

Feuersaenger
25-02-2012, 22:12
Hi J0Sch,

sobald die tick positionen nicht mehr uniform sind (d.h. sowas wie 1e1,1e2,1e3) werden die minor grids/ticks deaktiviert.

Am besten fuegst Du die nicht-uniformen tick positionen (d.h. die, die eigentlich keine major ticks sind), als extra ticks hinzu (details dazu im manual). Das beeinflusst dann nicht die plazierung der minor ticks.

J0Sch
27-02-2012, 09:42
moin,

danke für die Antworten. Die "extra ticks" sind genau das was ich gesucht habe!
Vielen Dank Feuersaenger!

schönen Tag noch,
Josch

Wolfson
28-02-2012, 15:19
Hallo,

ich habe ein ähnliches Problem und poste es von daher einfach mal hier dazu. Bei mir dürfte es wahrscheins ein anderer Grund sein... Folgender Code:

\documentclass[a4paper]{article}
\usepackage{pgfplots}

\begin{document}

\begin{figure}
\centering
\begin{tikzpicture}
\begin{semilogyaxis}[
xlabel={Xvals},
ylabel={Yvals},
grid=both]
\addplot table[x=Xval,y=Yval] {values.txt};
\end{semilogyaxis}
\end{tikzpicture}
\caption{bla}
\end{figure}

\end{document}

Die Datei values.txt hat dabei folgende Werte:

Xval Yval
0 4e-01
0.5 1e-01
1 2e-02
1.5 4e-03
2 8e-05
2.5 6e-06
3 7e-07
3.5 8e-08

Ändere ich den Y-Wert bei Xval=0 von 4e-01 auf 3e-01, also geringfügig kleiner dann sieht mein Diagramm so aus wie ich es haben möchte, mit dem "minor grid" der Y-Achse. Ist der Wert aber wie in der values.txt-Datei, dann verschwindet das Hilfs-Gitter :( Auch wenn ich die folgende Zeile einfüge:

ytick={1,0.1,0.01,0.001,0.0001,0.00001,0.000001,0. 0000001}
ändert sich an dem fehlenden Hilfs-Gitter Problem nichts :(
Weiß jemand eine Lösung?

Feuersaenger
28-02-2012, 18:07
Hallo Wolfson,

in Deinem Beispiel reicht die kleiner Erhoehung des Datenlimits, um die 10^0 als Kandidaten tauglich zu machen - und offenbar findet pgfplots, dass die zwischenschritt dann reinpassen. Und erst, wenn alle zwischenschritte drin sind, werden minor ticks gezeichnet.

Das Problem mit Deiner explizit angegebenen tick liste ist, dass sie nicht korrekt sortiert ist: wenn Du sie aufsteigend sortierst (d.h. andersrum), klappt es. Offenbar ist das system nicht klug genug, umgekehrt zu schauen.

Mit liebem Gruss

Christian

Sepp99
28-02-2012, 20:40
Nur zur Info. Gleiche Frage wurde auch unter http://www.golatex.de/viewtopic,p,36572.html#36572 gestellt.
Sepp.-

Wolfson
29-02-2012, 07:30
@Christian: Vielen herzlichen Dank für die schnelle und kompetente Hilfe! Hat wunderbar geklappt :)

@Sepp99: Wie hier http://www.golatex.de/viewtopic,p,36572.html#36572 bereits erwähnt: Sorry dass ich dort keinen Hinweis auf meine erneute Anfrage gegeben habe.