PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : pgfplots: logarithmische x-Achse; Problem mit Punkt bei x=0



habo
25-04-2012, 21:54
Hallo zusammen,

ich möchte mit pgfplots einen Graphen erstellen, mit einer logarithmisch skalierten x-Achse.

Die x-Werte liegen zwischen 0--10^-3. Wegen der Skalierung wird mir der Punkt bei x=0 nicht mehr angezeigt.

Lasse ich die Skalierung weg, wird der Graph im x-Achsenbereich 0--10^-4 so zusammengestaucht,
dass man die Punkte darin nicht mehr voneinander unterscheiden kann.

Ich möchte also zur besseren Darstellung die Skalierung beibehalten,
aber auch den Punkt bei x=0 darstellen.

Hat jemand einen Rat?
Ich benutze TeXNicCenter 1.0 und MiKTeX 2.8.

Gruß
habo



\documentclass{scrreprt}

\usepackage{pgfplots}%Um Tabellenkalkulationen einzufuegen

\pgfplotsset{
every axis x label/.append style={
text=gray,
anchor= near ticklabel
},
every axis y label/.append style={
rotate=-90,
text=gray,
anchor= near ticklabel
},
every axis/.append style={
mark= none,
},
every tick label/.append style={
text=gray
},
every axis legend/.append style={
anchor= west,
text=gray,
,
},
}%Legt globale Einstellungen fuer Graphen fest (Achsenbeschriftung, Farbe)

\begin{document}
\tikzset{
every pin/.style={font=\small},
small dot/.style={fill=black,circle,scale=0.25}
}
\begin{tikzpicture}
\begin{semilogxaxis}[
title=So sieht's aus,
axis x line=bottom,
axis y line=left,
xmin=0,
ymin=0,
xmax=0.001,
ymax=110,
every outer x axis line/.append style={-stealth,gray!50},
every outer y axis line/.append style={-stealth,gray!50},
]
\addplot[
color=orange!65,
]
coordinates{
(0, 100)
(0.0000001, 90)
(0.000001, 96)
(0.00001, 96)
(0.0001, 27)
(0.001, 0)
};
\addplot[
color=orange,
]
coordinates{
(0, 100)
(0.0000001, 106)
(0.000001, 97)
(0.00001, 100)
(0.0001, 94)
(0.001, 109)
};
\end{semilogxaxis}
\end{tikzpicture}

\tikzset{
every pin/.style={font=\small},
small dot/.style={fill=black,circle,scale=0.25}
}
\begin{tikzpicture}
\begin{axis}[
title=So bitte nicht,
axis x line=bottom,
axis y line=left,
xmin=0,
ymin=0,
xmax=0.001,
ymax=110,
every outer x axis line/.append style={-stealth,gray!50},
every outer y axis line/.append style={-stealth,gray!50},
]
\addplot[
color=orange!65,
]
coordinates{
(0, 100)
(0.0000001, 90)
(0.000001, 96)
(0.00001, 96)
(0.0001, 27)
(0.001, 0)
};
\addplot[
color=orange,
]
coordinates{
(0, 100)
(0.0000001, 106)
(0.000001, 97)
(0.00001, 100)
(0.0001, 94)
(0.001, 109)
};
\end{axis}
\end{tikzpicture}
\end{document}

tral
25-04-2012, 22:56
Hallo,

wo soll denn x=0 auf einer logarithmischen Skala angezeigt werden? Eigentlich ja gaaaaaaaaaaaaaaaaaaaanz weit links (log(x) geht gegen -Unendlich, wenn x gegen 0 geht)...

Christian.

habo
25-04-2012, 23:27
Da hast du natürlich recht, der Logarithmus ist für Null nicht definiert.
Das eigentliche Problem ist ja nicht die logarithmische Skalierung der x-Achse,
sondern die Darstellung des Graphen bei normaler Skalierung. Dabei werden
die Punkte stark zusammengestaucht.
Wenn ich irgendwie bei normaler Skalierung der x-Achse die Punkte vernünftig
anzeigen könnte, würde ich mir die logarithmische Skalierung sparen.

tral
26-04-2012, 07:34
Schwierig. Ich kenn ja die Art der Daten nicht. Aber vielleicht könntest du x=0 weglassen und stattdessen bei y=100 eine horizontale Linie zeichnen (sozusagen als Maximalwert) und diesen mit f(0) beschriften (falls deine Funktion f heißt).

Christian.

habo
26-04-2012, 10:51
In meinem Code ist der Graph mit den Daten doch eingebaut.
Ich verstehe nicht warum die Art der Daten relevant ist.
Und wenn ich eine horizontale Linie zeichne, muss ich der Linie doch auch
x-Werte zuordnen.
Ich muss wohl oder übel den Punkt bei x=0 weglassen.