Hallo, ich bin gerade am verzweifeln. Ich möchte ein Balkendiagramm mit tikz, pgfplots erstellen. Zu jedem Wert gibt es drei Balken. Das Problem ist, dass ich den Abstand zwischen den beiden Plots nicht verkürzen kann. Ich würde gerne den weißen Abstand in der Mitte verkleinern, weiß aber nicht wie. Kann mir jemand helfen? Mein Code: Open in Online-Editor
\documentclass{scrartcl} \usepackage[ngerman]{babel} \usepackage{tikz} \usepackage{pgfplots} \pgfplotsset{compat=1.9} \usepackage{pgfplotstable} \begin{document} \begin{tikzpicture} \begin{axis}[ x tick label style={ /pgf/number format/1000 sep=}, ylabel=Population, enlargelimits=0.15, ybar, bar width=7pt, xtick={1930,1940}, xmin=1930, xmax=1940 ] \addplot coordinates {(1930,50e6) (1940,33e6)}; \addplot coordinates {(1930,38e6) (1940,42e6)}; \addplot coordinates {(1930,15e6) (1940,12e6)}; \addplot[red,sharp plot,update limits=false] coordinates {(1910,4.3e7) (1990,4.3e7)} node[above] at (axis cs:1950,4.3e7) {Houses}; \end{axis} \end{tikzpicture} \end{document} Das Liefert folgendes: Ich hätte gerne aber soetwas: Ich hoffe ihr könnt mir helfen. gefragt 18 Jul '16, 16:34 DerMetzger saputello |
Du musst nur die Größe des Plots ändern. Ich habe Open in Online-Editor
enlarge x limits=0.5,
width=5cm, height=\axisdefaultheight,
gewählt. Das Möchte man die Größe nicht ändern, so kann man natürlich einfach die Limits der x-Achse vergrößern, zum Beispiel Open in Online-Editor
\documentclass{article} \usepackage{pgfplots} \pgfplotsset{compat=1.9} \begin{document} \begin{tikzpicture} \begin{axis}[ x tick label style={ /pgf/number format/1000 sep=}, ylabel=Population, enlargelimits=0.15, ybar, bar width=7pt, xtick={1930,1940}, xmin=1930, xmax=1940, %--- enlarge x limits=0.5, width=5cm, height=\axisdefaultheight, ] \addplot coordinates {(1930,50e6) (1940,33e6)}; \addplot coordinates {(1930,38e6) (1940,42e6)}; \addplot coordinates {(1930,15e6) (1940,12e6)}; \addplot[red,sharp plot,update limits=false] coordinates {(1910,4.3e7) (1990,4.3e7)} node[above] at (axis cs:1950,4.3e7) {Houses}; \end{axis} \end{tikzpicture} \end{document} beantwortet 18 Jul '16, 16:50 Henri Super! Vielen Dank, das löst jetzt mein Problem für symbolic x coords Danke
(18 Jul '16, 17:07)
DerMetzger
|
Eine weitere Möglichkeit wäre, eine Länge für eine Open in Online-Editor
x=5pt,% hier mindestens 2.7pt enlarge x limits={abs=25pt},% hier mind. 12.5pt Open in Online-Editor
\documentclass{scrartcl} \usepackage[ngerman]{babel} \usepackage{pgfplots}% lädt auch tikz \pgfplotsset{compat=1.9} \begin{document} \begin{tikzpicture} \begin{axis}[ x=5pt, enlarge x limits={abs=25pt}, x tick label style={/pgf/number format/1000 sep=}, ylabel=Population, ybar, bar width=7pt, xtick={1930,1940}, xmin=1930, xmax=1940 ] \addplot coordinates {(1930,50e6) (1940,33e6)}; \addplot coordinates {(1930,38e6) (1940,42e6)}; \addplot coordinates {(1930,15e6) (1940,12e6)}; \addplot[red,sharp plot,update limits=false] coordinates {(1910,4.3e7) (1990,4.3e7)} %node[above] at (axis cs:1950,4.3e7) {Houses}% außerhalb des Plotbereiches ; \end{axis} \end{tikzpicture} \end{document} Die Werte ergeben sich aus folgenden Überlegungen: Du hast drei Plots bei denen die Balken jeweils 7pt breit sind. Außerdem ist zwischen den Balken, die zum gleichen Da die Breite der Balken beim Ermitteln der nötigen Breite für den Plot nicht berücksichtigt wird, muss über Das funktioniert auch mit symbolischen Koordinaten. Dann entspricht eine Open in Online-Editor
\documentclass{scrartcl} \usepackage[ngerman]{babel} \usepackage{pgfplots}% lädt auch tikz \pgfplotsset{compat=1.9} \begin{document} \begin{tikzpicture} \begin{axis}[ x=50pt, enlarge x limits={abs=25pt}, x tick label style={/pgf/number format/1000 sep=}, ylabel=Population, ybar, bar width=7pt, symbolic x coords={left,1930,1940,right}, xtick=data ] \addplot coordinates {(1930,50e6) (1940,33e6)}; \addplot coordinates {(1930,38e6) (1940,42e6)}; \addplot coordinates {(1930,15e6) (1940,12e6)}; \addplot[red,sharp plot,update limits=false] coordinates {(left,4.3e7) (right,4.3e7)} ; \end{axis} \end{tikzpicture} \end{document} beantwortet 19 Jul '16, 01:18 esdd |
Sobald Du 60 Punkte erreicht hast, Bilder bitte direkt hier hochladen und einbinden. Das geht dann über das Foto-Symbol in der Toolbar ganz einfach. Wenn Du weiter Fragen mit klarer Problembeschreibung und ordentlichem Minimalbeispiel stellst, wirst Du die dafür notwendigen Punkte sicher schnell zusammen haben. Ich würde Dir für diese gut gestellte erste Frage gerne ein paar Punkte schenken. Leider kann man das nur für Antworten.