Re: [Pgfplots-features] Problems when changing axis style for a semilog axis
Brought to you by:
cfeuersaenger,
ludewich
|
From: Christian F. <lud...@us...> - 2010-08-23 19:08:30
|
Hello Moritz,
sorry for the late answer; I've been busy for some time.
Concerning your questions:
The main point in the provided examples is: log(0) is undefined (or it
is -infinity). It seems as if pgfplots takes log(ymin) = log(0) =
undefined and treats it as if you did not provide ymin at all, thereby
ignoring the value. This shouldn't happen; it should complain instead.
I'll take a note on my todo list. Nevertheless, it explains why your
experiments with "/pgfplots/axis x line=bottom,/pgfplots/axis y
line=left" did not have the desired effect -- pgfplots ignored the
undefined ymin=0 value and took the value of the data files instead.
Consequently, the "axis x line=middle" which, according to the manual,
should pass through "y=0", has no effect for logarithmic axes since
log(y) for y<=0 is undefined. Instead, it has the same effect like axis
x line=bottom.
Sorry for the improper sanity checking in this case... it will be fixed.
Concerning the "rotate" problem: try adding "transform shape" near
rotate=-90, it appears to fix the problem according to my tests.
I will try to improve this such that it doesn't need to be provided
manually.
> So, is there any way to have a X axis from 0 to 1e6 and a Y axis from
> 0 to 51 without boxing the plots? Any help is appreciated!
All you did was correct -- except for the ymin=0. You will have to use
either a linear (non-logarithmic) y axis, or you should resort to some
strictly positive ymin which is "small enough" like ymin=1e-16 .
Best regards
Christian
Am 13.08.2010 09:22, schrieb nur...@go...:
> Hello,
>
> I'm using pgfplots to draw a figure with four plots using a
> semilogy-axis (code below). Everything works perfectly fine. X- and
> Y-axis cross at (0,0) and form a box.
>
> ---- CODE ----
>
> \begin{tikzpicture}[
> /pgfplots/width=0.95\textheight,
> /pgfplots/height=\textwidth,
> rotate=-90]
> \begin{semilogyaxis}[
> xlabel={X},
> ylabel={Y},
> legend columns=4,
> xmin=0,
> xmax=51,
> ymin=0,
> ymax=1e6,
> minor x tick num=4,
> %/pgfplots/axis x line=middle,
> %/pgfplots/axis y line=left,
> legend style= {at={(0.5,0.02)}, anchor=south}
> ]
>
> \addplot[no markers, black!30!white, densely dotted] file {A.dat};
> \addplot[no markers, loosely dashed] file {B.dat};
> \addplot[no markers, black!80!white] file {C.dat};
> \addplot[no markers, densely dashed] file {D.dat};
>
> \legend{A, B, C, D}
>
> \end{semilogyaxis}
> \end{tikzpicture}
>
> ---- CODE END ----
>
> I then added "/pgfplots/axis x line=bottom,/pgfplots/axis y line=left"
> to the options of my "semilogyaxis" to get rid of the box. Now the
> axes cross at (0,1). 1 is indeed yMin when examing the plotted data,
> but not the specified yMin from the axis options. I then tried "axis x
> line=center", but the x-axis is still drawn at 10^0=1, not 0 as stated
> in the manual. Did I misunterstood something?
>
> Another problem occurs when using "axis x line=center" together with
> the "rotate=-90": The figure is moved off to the right side of the
> page, the bottom is visible in the page margin. The label for the
> y-axis is shown in the top left corner of the page... This doesn't
> happen with "bottom" or if I remove the "rotate".
>
> So, is there any way to have a X axis from 0 to 1e6 and a Y axis from
> 0 to 51 without boxing the plots? Any help is appreciated!
>
> Thanks,
>
> Moritz
>
> ------------------------------------------------------------------------------
> This SF.net email is sponsored by
>
> Make an app they can't live without
> Enter the BlackBerry Developer Challenge
> http://p.sf.net/sfu/RIM-dev2dev
> _______________________________________________
> Pgfplots-features mailing list
> Pgf...@li...
> https://lists.sourceforge.net/lists/listinfo/pgfplots-features
|