Ich möchte ein Balkendiagramm einfügen, erhalten jedoch den ersten Wert der X-Achse doppelt angezeigt. Minimalbeispiel: \documentclass[12pt,a4paper,bibtotocnumbered]{scrartcl} \usepackage[ngerman]{babel} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage{pgf-pie} \usepackage{pgfplots} \pgfplotsset{width=7cm,compat=1.16} \begin{document} \section{Blumentypen} \begin{tikzpicture}[scale=0.5] \begin{axis} [ title = Schalen- und Scheibenblumen, xbar, y axis line style = { opacity = 0 }, legend style={at={(1,0), anchor=south east},anchor=south,legend columns=-1}, axis x line = none, tickwidth = 0pt, enlarge y limits = 0.2, enlarge x limits = 0.02, nodes near coords, symbolic y coords = {10. und 11. 09., 02. und 03.09., 26. und 29.08., 25. und 26.08., 06.08., 30.07., 24. und 27.07., 19.07., 10.07., 01. und 03.07., 15. und 23. 05.,} ] \addplot coordinates {(24,10. und 11. 09.)(24,02. und 03.09.)(14,26. und 29.08.)(15,25. und 26.08.)(22,06.08.)(21,30.07.)(16,24. und 27.07.)(12,19.07.)(14,10.07.)(7,01. und 03.07.)(6,15. und 23. 05.)}; \addplot coordinates {(10,10. und 11. 09.)(11,02. und 03.09.)(16,26. und 29.08.)(16,25. und 26.08.)(15,06.08.)(12,30.07.)(15,24. und 27.07.)(14,19.07.)(14,10.07.)(10,01. und 03.07.)(12,15. und 23. 05.)}; \end{axis} \end{tikzpicture} \end{document}
Ergebnis 5 von 6
show 1 more comments
|
(1) Bei mir müssen die Eingangsdaten immer übersichtlich am Anfang stehen. Hier bietet sich also ein table-plot an. Einen coordinate-plot würde ich nur in Ausnahmefällen verwenden, z.B. wenn einzelne Punkte ergänzt werden sollen o.ä. (2) Ansonsten will ich mehrfach verwendete Daten nur einmal aufführen müssen (das betrifft hier die Werte zu den 'symbolic y coords'). Abhhilfe schafft dabei yticklabels from table={\blumentable}{yText}, ytick=data, im Hinblick auf die erwähnte Tabelle (1). Mit der folgenden Lösung bin ich 90% zufrieden; denn im Hinblick auf (2) würde ich eigentlich die y-Achsen-Beschriftungen des Typs "10. und 11.09." auch automatisch aus Rohdaten erzeugen wollen. Dann müsste es aber voraussichtlich ein richtiger Ansonsten kann man die folgende 'inlinetable' bei Bedarf auch als externe Datentabelle ausführen (z.B. \documentclass[a4paper]{article} \usepackage{pgfplots, pgfplotstable} \pgfplotsset{width=7cm, compat=1.16} \begin{document} \section{Blumentypen - neu} \pgfplotstableread[col sep=comma]{ Wert1, Wert2, yText 24, 10, 10. und 11.09. 24, 11, 02. und 03.09. 14, 16, 26. und 29.08. 15, 16, 25. und 26.08. 22, 15, 06.08. 21, 12, 30.07. 16, 15, 24. und 27.07. 12, 14, 19.07. 14, 14, 10.07. 7, 10, 01. und 03.07. 6, 12, 15. und 23.05. }\blumentable \begin{tikzpicture} \begin{axis}[ title={Schalen- und Scheibenblumen}, xbar, bar width=7pt, y=25pt, % axis x line=none, hide x axis, y axis line style={opacity = 0}, tickwidth= 0pt, enlarge y limits={abs=25pt}, nodes near coords, %nodes near coords align=horizontal, % yticklabels from table={\blumentable}{yText}, ytick=data, xmin=0, ] \addplot table [y expr=\coordindex, x=Wert1] {\blumentable}; \addplot table [y expr=\coordindex, x=Wert2] {\blumentable}; \end{axis} \end{tikzpicture} \section{Blumentypen - alt} \begin{tikzpicture} \begin{axis} [ title = Schalen- und Scheibenblumen, xbar, y=25pt, y axis line style = { opacity = 0 }, axis x line = none, tickwidth = 0pt, enlarge y limits = {abs=25pt}, bar width = 7pt, ytick = data, nodes near coords, symbolic y coords = {10. und 11. 09., 02. und 03.09., 26. und 29.08., 25. und 26.08., 06.08., 30.07., 24. und 27.07., 19.07., 10.07., 01. und 03.07., 15. und 23. 05.,}, ] \addplot coordinates {(24,10. und 11. 09.)(24,02. und 03.09.)(14,26. und 29.08.)(15,25. und 26.08.)(22,06.08.)(21,30.07.)(16,24. und 27.07.)(12,19.07.)(14,10.07.)(7,01. und 03.07.)(6,15. und 23. 05.)}; \addplot coordinates {(10,10. und 11. 09.)(11,02. und 03.09.)(16,26. und 29.08.)(16,25. und 26.08.)(15,06.08.)(12,30.07.)(15,24. und 27.07.)(14,19.07.)(14,10.07.)(10,01. und 03.07.)(12,15. und 23. 05.)}; \end{axis} \end{tikzpicture} \end{document} beantwortet 19 Mär '20, 21:35 cis |
Ich verstehe nicht, was Du mit doppeltem Eintrag meinst. Mich stört an dem Diagramm eher, dass die Balken aufeinander gelegt werden und sich so überdecken. Mit der Methode, die @esdd zu einer entsprechenden Frage für vertikale Balkendiagramme schon früher gezeigt hat: \documentclass[12pt,a4paper]{scrartcl} \usepackage[ngerman]{babel} \usepackage[T1]{fontenc} \usepackage{pgfplots} \pgfplotsset{compat=1.16} \begin{document} \section{Blumentypen} \begin{tikzpicture} \begin{axis} [ title = Schalen- und Scheibenblumen, xbar, y=25pt, y axis line style = { opacity = 0 }, axis x line = none, tickwidth = 0pt, enlarge y limits = {abs=25pt}, bar width = 7pt, ytick = data, nodes near coords, symbolic y coords = {10. und 11. 09., 02. und 03.09., 26. und 29.08., 25. und 26.08., 06.08., 30.07., 24. und 27.07., 19.07., 10.07., 01. und 03.07., 15. und 23. 05.,}, ] \addplot coordinates {(24,10. und 11. 09.)(24,02. und 03.09.)(14,26. und 29.08.)(15,25. und 26.08.)(22,06.08.)(21,30.07.)(16,24. und 27.07.)(12,19.07.)(14,10.07.)(7,01. und 03.07.)(6,15. und 23. 05.)}; \addplot coordinates {(10,10. und 11. 09.)(11,02. und 03.09.)(16,26. und 29.08.)(16,25. und 26.08.)(15,06.08.)(12,30.07.)(15,24. und 27.07.)(14,19.07.)(14,10.07.)(10,01. und 03.07.)(12,15. und 23. 05.)}; \end{axis} \end{tikzpicture} \end{document} wird das Ergebnis IMHO besser: Näheres zu den Optionen beantwortet 24 Feb '20, 10:16 saputello Wow, vielen Dank für Euren sehr hilfreichen Antworten, und entschuldigt die Fehler!
(24 Feb '20, 13:03)
rototom
@rototom Ich habe Deine Nicht-Antwort in einen Kommentar umgewandelt. Bitte beachte, dass hier Antworten immer im Sinn von Lösungsvorschlägen zur Frage zu verstehen sind. Hinweise wie diesen, kann man hingegen als Kommentar unterbringen. Danke-Kommentare sind dagegen eigentlich überflüssig. Dafür haben wir andere Mittel. Siehe bitte auch: Ich habe auf meine Frage eine Antwort bekommen. Wie geht es weiter?
(24 Feb '20, 13:19)
saputello
Ich finde etwas irritierend, dass die Balken links offenbar nicht bei null beginnen, und somit beispielsweise ein Ergebnis "12" wesentlich mehr als doppelt so lang dargestellt wird wie "6". Läßt sich das ausgleichen?
(24 Feb '20, 13:24)
rototom
@rototom: RTFM, 4.14 Specifying the Plotted Range in der
(24 Feb '20, 14:28)
saputello
Super, danke. xmin = 0 ist super!
(24 Feb '20, 14:59)
rototom
|
Die Antwort auf eine ähnliche Frage dürfte alles enthalten, was Du zur Lösung Deines Problems brauchst.
Bitte verwende für die Markierung von Code keine (zudem nicht korrekt beendeten) HTML-Tags, sondern das hier präferierte Markdown (diese Hilfe gibt es übrigens auch bei einem Klick auf das große Fragezeichen ganz rechts über dem Eingabefeld für neue Fragen/Antworten). Falsches Markup, wie ursprünglich von Dir verwendet, kann die Seite schon ziemlich durcheinander bringen
Off-Topic: Option
bibtotocnumbered
ist veraltet und sollte nicht mehr verwendet werden. In der daraus resultierenden Warnung ist auch die Option zu finden, die stattdessen zu verwenden ist.Übrigens wird das Diagramm besser, wenn Du
width=7cm
weglässt. Das Paketpgf-pie
, das wegen fehlender Lizenzangaben nicht in TeX Live enthalten ist, braucht man für das Beispiel auch nicht.Ich verstehe ehrlich gesagt nicht ganz, was Du mit dem doppelt angezeigten ersten Wert der x-Achse meinst. Falls Du meinst, dass da zwei blaue Balken mit 24 zu sehen sind: In den Daten ist dieser Wert auch zweimal drin:
(
24,10. und 11. 09.)(
24,02. und 03.09.)
.Crossposts bitte immer verlinken!