Archiv verlassen und diese Seite im Standarddesign anzeigen : Balkendiagramme: Zwei Balken eine mittige Beschriftung
Dr.Wackelzahn
06-12-2008, 22:21
Hallo,
jetzt wird es etwas kniffliger. Ich benötige ein Balkendiagramm in welchem zwei Balken sich eine mittige Beschriftung teilen.
Ähnlich dem hier hinterlegten Beispiel, welches ich allerdings mit Gimp so halbwegs zusammen gestöpselt habe.
Wichtig scheinen mir die Ticks zwischen den beiden zusammen gehörenden Balken, so dass es eindeutig ist, dass die zentrierte Beschriftung für beide gilt.
VIelen Dank,
Gruß,
Alex
bobmalaria
06-12-2008, 23:12
hi,
schau dir mal pgfplot an.
in der anleitung auf seite 30 (http://www.ctan.org/tex-archive/graphics/pgf/contrib/pgfplots/doc/latex/pgfplots.pdf), das sieht fast so aus wie du es haben möchtest.
gruß
Dr.Wackelzahn
06-12-2008, 23:16
Bin von pgfplots weg, da es meinen Anforderungen nicht genügt.
Es ist, scheinbar, nicht möglich alphanumerische Beschriftungen in pgfplots zu verwenden. Die würde ich allerdings benötigen, daher nehme ich pstricks.
jetzt wird es etwas kniffliger. Ich benötige ein Balkendiagramm in welchem zwei Balken sich eine mittige Beschriftung teilen.
Ähnlich dem hier hinterlegten Beispiel, welches ich allerdings mit Gimp so halbwegs zusammen gestöpselt habe.
Wichtig scheinen mir die Ticks zwischen den beiden zusammen gehörenden Balken, so dass es eindeutig ist, dass die zentrierte Beschriftung für beide gilt.
dann änderst du bei der x-Achse einfach das dx=...
Herbert
Dr.Wackelzahn
06-12-2008, 23:25
EDIT:
Funktioniert leider nicht, da es nur für das erste Balkenpaar funktioniert, dann ist wieder ein Versatz drin (siehe Anhang).
Im Bild sollten die Ticks an die Stelle der Mauszeiger und nicht auf Höhe der Hand.
Und wie bekomme ich dann noch die mittige, ggf. zweizeilige Beschriftung unter diesen Tick?
EDIT:
Funktioniert leider nicht, da es nur für das erste Balkenpaar funktioniert, dann ist wieder ein Versatz drin (siehe Anhang).
Im Bild sollten die Ticks an die Stelle der Mauszeiger und nicht auf Höhe der Hand.
Und wie bekomme ich dann noch die mittige, ggf. zweizeilige Beschriftung unter diesen Tick?
\documentclass[a4paper,11pt]{article}
\usepackage{pstricks-add}
\begin{document}
\begin{pspicture}(5,5)
\psaxes[dx=1.5cm,labels=y,ticksize=0 -5pt]{->}(5,5)
\rput[r]{90}(1.5,-0.2){\parbox{3cm}{Hier steht\\ ganz viel Text,
der so lang sein kann, wie er will}}
\uput[-90]{90}(4.5,0){\parbox{3cm}{Eins\\zwei drei und noch vier}}
\end{pspicture}
\end{document}
zwei Möglichkeiten.
Herbert
EDIT:
Funktioniert leider nicht, da es nur für das erste Balkenpaar funktioniert, dann ist wieder ein Versatz drin (siehe Anhang).
Im Bild sollten die Ticks an die Stelle der Mauszeiger und nicht auf Höhe der Hand.
Und wie bekomme ich dann noch die mittige, ggf. zweizeilige Beschriftung unter diesen Tick?
Ich habe keine Kristallkugel, um genau zu wissen, was _du_ eigentlich gemacht hast.
Herbert
Dr.Wackelzahn
06-12-2008, 23:56
Entschuldigung, ich hatte den Code vergessen:
\documentclass[12pt]{article}
\usepackage{fp-basic,pstricks-add,pst-eps,xcolor}
\usepackage[dvips,margin=0.25cm,paperwidth=15.25cm,paperheight =11.25cm]{geometry}
\usepackage[ngerman]{babel}
\newcommand{\setvar}[2]{
\newcommand{#1}{#2}
}
\pagestyle{empty}
\input{Farben}
\begin{document}
\def\nameone{fehlende Primärstabilität,keine Integration,peri Wucherung}
\def\dataone{20,80,60}
\def\datatwo{40,100,0}
\newcounter{yoneVal}
\newcounter{ytwoVal}
\newcounter{xoneVal}
\newcounter{xtwoVal}
\setvar{\xtitel}{Grund Pantation}
\setvar{\xTitelPosition}{30}
\setvar{\ytitel}{Anzahl der Implantationen}
\setvar{\yTitelPosition}{1}
\setvar{\xmin}{0}
\setvar{\ymin}{0}
\setvar{\xmax}{6}
\setvar{\ymax}{100}
\setvar{\schritt}{10}
\setvar{\breite}{12.5}
\setvar{\hoehe}{8}
\setvar{\strichbreite}{5}
\setvar{\beschriftungswinkel}{55}
\setvar{\yRaster}{5}
% Interne Verarbeitung
\setvar{\yabstandeinheit}{\yabstand cm}
\setvar{\strichlaenge}{-\strichbreite}
\FPdiv{\balkenbreite}{\breite}{\xmax}
\FPdiv{\balkenbreite}{\balkenbreite}{2}
\setvar{\breiteeinheit}{\breite cm}
\setvar{\hoeheeinheit}{\hoehe cm}
\FPadd{\ymax}{\ymax}{\schritt}
%\FPsub{\ydiff}{\ymax}{\ymin}
\FPdiv{\yabstand}{1}{\ymax}
\FPmul{\yabstand}{\yabstand}{\hoehe}
\FPmul{\yabstand}{\yabstand}{\schritt}
\FPadd{\xmax}{\xmax}{\balkenbreite}
\setvar{\xTitelPos}{-\xTitelPosition}
\setvar{\yTitelPos}{-\yTitelPosition}
\psset{llx=-1.6cm,lly=-0.6cm,
yAxisLabel=\ytitel,
yAxisLabelPos={\yTitelPos,c},
xAxisLabel=\xtitel,
xAxisLabelPos={c,\xTitelPos}}
\begin{psgraph}[Dy=\schritt,dy=\yabstandeinheit,Dx=1,dx=1.5,
yticksize=\strichlaenge pt 0pt,
xticksize=0 -5pt,xsubticks=0,
ysubticks=\yRaster,labels=y](\xmin,\ymin)(\xmax,\ymax){\breiteeinheit}{\hoehee inheit}
% Hilfslinien
\psaxes[labels=none,
ticks=y,
yticksize=0 \xmax,
ysubticks=5,
subticksize=1,
tickcolor=black!20,
subtickcolor=black!30,
subticklinestyle=dotted,
Dy=\schritt,
dy=\yabstandeinheit](\xmax,\ymax)
\psforeach{\nA}{\dataone}{
\stepcounter{xoneVal}
\psline[linewidth=\balkenbreite,linecolor=dia1](\thexoneVal,0)(\thexoneVal,\nA)
\uput*[90]{\beschriftungswinkel}(\thexoneVal,\nA){\small\nA}
\stepcounter{xoneVal}}
\psforeach{\nB}{\datatwo}{
\stepcounter{xtwoVal}
\stepcounter{xtwoVal}
\psline[linewidth=\balkenbreite,linecolor=dia2](\thextwoVal,0)(\thextwoVal,\nB)
\uput*[90]{\beschriftungswinkel}(\thextwoVal,\nB){\small\nB} }
\psforeach{\nD}{\nameone}{
\stepcounter{yoneVal}
\stepcounter{yoneVal}
\rput[c]{0}(\theyoneVal,-10){\parbox{3cm}{\small\nD}}}
% Legend
\psframe[linecolor=black,fillstyle=solid](4.7,109)(7.05,96)
\psline[linecolor=dia1,linewidth=7pt](4.8,105)(5.1,105)
\uput[0](5.1,105){augmentiert}
\psline[linecolor=dia2,linewidth=7pt](4.8,100)(5.1,100)
\uput[0](5.1,100){nicht augmentiert}
\end{psgraph}
\end{document}
So sieht das Ergebnis derzeit aus.
Entschuldigung, ich hatte den Code vergessen:
[CODE]\psset{llx=-1.6cm,lly=-0.6cm,
yAxisLabel=\ytitel,
yAxisLabelPos={\yTitelPos,c},
xAxisLabel=\xtitel,
xAxisLabelPos={c,\xTitelPos}}
\begin{psgraph}[Dy=\schritt,dy=\yabstandeinheit,Dx=1,dx=1.5\psxuni t,
yticksize=\strichlaenge pt 0pt,
Genau weiß ich hier aber nicht, wo bei 5 Balken die Ticks hin sollen.
Wenn das die einzige Abbildung ist, dann mach einfach
\psforeach{\nA}{1.5,3,4.5}{\psline(\nA,0)(\nA,-0.2)}
und fertig.
Herbert
Dr.Wackelzahn
07-12-2008, 09:43
Hallo,
es sind doch 6 Balken. Schlecht von mir war, dass der letzte einen Wert von 0 hat.
Es werden noch mehr mit noch mehr Balken.
Später sollen auch noch Diagramme mit 3-4 zusammengefassten Balken entstehen.
Daher wäre eine universellere Lösung günstiger.
Vielen Dank!
Hallo,
es sind doch 6 Balken. Schlecht von mir war, dass der letzte einen Wert von 0 hat.
Es werden noch mehr mit noch mehr Balken.
Später sollen auch noch Diagramme mit 3-4 zusammengefassten Balken entstehen.
Daher wäre eine universellere Lösung günstiger.
mit 1.5\psxunit klappte es jedenfalls bei mir.
Herbert
Dr.Wackelzahn
07-12-2008, 10:48
Ja, die Striche schon, aber der Text schaut doch komisch aus.
Kann man den noch irgendwie zentrieren und bei allen drei Beschriftungen die zweite Zeile erzwingen?
Da würde es einheitlicher aussehen.
Ich habe mal ein Bild angehängt wie es jetzt aussieht...
Ja, die Striche schon, aber der Text schaut doch komisch aus.
Kann man den noch irgendwie zentrieren und bei allen drei Beschriftungen die zweite Zeile erzwingen?
Da würde es einheitlicher aussehen.
Ich habe mal ein Bild angehängt wie es jetzt aussieht...
dann amch einfach
\uput[-90](..,..){\tabular{@{} l @{}} Zeile 1\\Teile2\endtabular}
Alternativ \rput, je nachdem, was du nimmst.
Trotzdem würde ich den Text senkrecht setzen.
Herbert
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.