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}

gefragt 23 Feb '20, 16:19

rototom's gravatar image

rototom
3124
Akzeptiert-Rate: 0%

bearbeitet 24 Feb '20, 08:58

saputello's gravatar image

saputello
11.1k154365

1

Die Antwort auf eine ähnliche Frage dürfte alles enthalten, was Du zur Lösung Deines Problems brauchst.

(24 Feb '20, 05:19) Bartman

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

(24 Feb '20, 09:02) saputello

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.

(24 Feb '20, 09:03) saputello

Übrigens wird das Diagramm besser, wenn Du width=7cm weglässt. Das Paket pgf-pie, das wegen fehlender Lizenzangaben nicht in TeX Live enthalten ist, braucht man für das Beispiel auch nicht.

(24 Feb '20, 09:13) saputello

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.).

(24 Feb '20, 09:16) saputello

Crossposts bitte immer verlinken!

(24 Feb '20, 09:49) saputello
Ergebnis 5 von 6 show 1 more comments

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:

Ergebnis

Näheres zu den Optionen y, enlarge y limits und bar width ist der verlinkten Antwort (dort entsprechend mit x statt y) und der pgfplots-Anleitung zu entnehmen.

Permanenter link

beantwortet 24 Feb '20, 10:16

saputello's gravatar image

saputello
11.1k154365
Akzeptiert-Rate: 51%

bearbeitet 24 Feb '20, 10:20

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 pgfplots-Anleitung. Gleich die erste dort genannte Option ist ein Volltreffer. Beispiele zur Verwendung gibt es auch direkt.

(24 Feb '20, 14:28) saputello

Super, danke. xmin = 0 ist super!

(24 Feb '20, 14:59) rototom

(1) Bei mir müssen die Eingangsdaten immer übersichtlich am Anfang stehen.
Sonst bin ich, wenn ich etwas ändern oder ergänzen möchte, ganz verwirrt.

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 dateplot (vgl. Handbuch) werden und es wird nochmal ein gutes Stück komplizierter.
Also nehmen wir für das MWE unten an, dass es sich um irgendwelche Textebeisätze handelt, wie z.B. das Wort "Sonnenblumen".

Ansonsten kann man die folgende 'inlinetable' bei Bedarf auch als externe Datentabelle ausführen (z.B. blumentabelle.txt)

alt text

\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}
Permanenter link

beantwortet 19 Mär '20, 21:35

cis's gravatar image

cis
9.5k74452491
Akzeptiert-Rate: 29%

bearbeitet 19 Mär '20, 22:34

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×728
×53
×28
×11

gestellte Frage: 23 Feb '20, 16:19

Frage wurde gesehen: 5,104 Mal

zuletzt geändert: 19 Mär '20, 22:34