Seite 1 von 1

Bar Chart mit kleiner Y-Range

Verfasst: Mo 28. Okt 2013, 19:54
von doeminick
Hi!

Ich möchte ein Bar Graph erzeugen und nutze dafür matlab2tikz. Das klappt auch alles gut, bis auf einen Graphen. Hierbei betrachte ich nur einen kleinen Ausschnitt auf der Y-Achse und kriege "Dimension too large" Fehler. Daher habe ich in die pgfplots-Manual geschaut und auch gefunden, dass diese Fehler bei Daten die sehr nah aneinander liegen entstehen, jedoch kein Problem bei absoluten Werten größer sind, relativ aber gleich sind sein sollte. Also einfach mal alle Werte x1000 genommen um dann nachher einfach die Y-Tickz per Hand zu setzen. Aber nein, gleicher Fehler obwohl nun ymin=996 und ymax=1002 sind.

Kann mir jemand Hilfe geben? Vielen Dank :).

Hier mein (ursprünglicher) Tikz Code:
% This file was created by matlab2tikz v0.4.1.
% Copyright (c) 2008--2013, Nico Schlömer <nico.schloemer@gmail.com>
% All rights reserved.
% 
% The latest updates can be retrieved from
%   http://www.mathworks.com/matlabcentral/fileexchange/22022-matlab2tikz
% where you can also make suggestions and rate matlab2tikz.
% 
% 
% 

% defining custom colors
\definecolor{mycolor1}{rgb}{0,0,0.00520833333333333}%

\begin{tikzpicture}
\begin{axis}[%
width=\figurewidth,
height=\figureheight,
area legend,
scale only axis,
xmin=0.5,
xmax=4.5,
xtick={1,2,3,4},
xticklabels={A,B,C,D},
ymin=0.996,
ymax=1.002,
ylabel={Verbesserung},
ymajorgrids,
legend style={at={(0.5,1.03)},anchor=south,legend columns=2,draw=black,fill=white,legend cell align=left}
]
\addplot[ybar,bar width=0.0571428571428571\figurewidth,bar shift=-0.0357142857142857\figurewidth,fill=mycolor1,draw=black] plot coordinates{(1,1)
(2,1)
(3,1)
(4,1)};

\addlegendentry{Ohne};

\addplot [
color=black,
solid,
forget plot
]
table[row sep=crcr]{
0.5 0\\
4.5 0\\
};
\addplot[ybar,bar width=0.0571428571428571\figurewidth,bar shift=0.0357142857142857\figurewidth,fill=white,draw=black] plot coordinates{(1,1.00063267718012)
(2,1.00016121821389)
(3,1.00108135520258)
(4,0.999543145163719)};

\addlegendentry{Mit};

\end{axis}
\end{tikzpicture}%

Verfasst: Mo 28. Okt 2013, 20:47
von Johannes_B
Crosspost auf LaTeX Community

Verfasst: Mo 28. Okt 2013, 21:19
von doeminick
Entschuldigung, ich hatte die Regel über Crossposts nicht gelesen (btw, handelt es sich nicht um Multiposts dann ;) )?
Ich wollte einfach eine möglichst große Gemeinde alsbald ansprechen, da ich diese Graphik für eine Abgabe in naher Zeit benötige. Könnte mir jemand trotzdem helfen?

Verfasst: Di 29. Okt 2013, 20:15
von feuersaenger
Hi,

das Problem entsteht dadurch, dass Koordinaten "relativ" weit ausserhalb des Sichtbaren Bereichs geplottet werden.

Das "weit" bezieht sich dabei auf den Faktor, der zwischen der Breite des angezeigten Gebiets und den aussenstehenden Koordinaten besteht (d.h. ymax-ymin im Vergleich zu der groessten y koordinate).

Dem kann abgeholfen werden, indem die weit aussenliegenden Koordinaten auf ein "annehmbares" Mass gezwungen werden. Das aendert typischerweise nichts am Aussehen, das sie ohnehin weit ausserhalb des sichtbaren Bereiches sind - aber TeX meckert nicht mehr.

Konkret:
restrict x to domain*=0:3,
restrict y to domain*=0.8:2,
Dieser Key forziert x bzw. y auf die angegebenen Bereiche. Falls ein Punkt rausfaellt, wird er auf die Intervallgrenze gezwungen (das ist der Effekt des Asterisk).

Vielleicht musst Du ein bisschen mit den Parametern rumspielen, aber obige passten bei mir.

Mit liebem Gruss

Christian