Gruppiertes Balkendiagramm von PGFPlots mit Fehlerbalken, das zusätzliche Informationen darüber liefert. Konvertieren Sie Punkte in Kommas zur Anzeige in Zeichenfolgen.

Gruppiertes Balkendiagramm von PGFPlots mit Fehlerbalken, das zusätzliche Informationen darüber liefert. Konvertieren Sie Punkte in Kommas zur Anzeige in Zeichenfolgen.

Wie kann ich in meinen oberen Achsen (die Zahl über dem Hauptraster) ein Komma als Dezimaltrennzeichen erhalten?

Alle Vorschläge zur Verbesserung der Grafik sind herzlich willkommen.

Grundvoraussetzung

  • Verwenden von CSV-Daten mit (langen) Floats und Fehlern
  • Anzeige von Informationen in gruppierten Paaren (gleicher Prüfkörper mit unterschiedlichen Einspannvorrichtungen)
  • mit Fehlerinformationen (die teilweise recht umfangreich sind)
  • Ich möchte nicht jeden Wert jedes Balkens anzeigen, sondern den Mittelwert jeder Gruppe

Ich habe es versucht und es geschafft, allerdings mit dem Problem, dass das Dezimaltrennzeichen ein Punktmittelwertdiagramm ist. (Außerdem möchte ich nicht, dass irgendwelche Markierungen oder andere Dinge angezeigt werden, und das Etikett sollte in Schwarz gedruckt werden.)

Die Grundausstattung habe ich vonHandbuch zum Paket PGFSPLOTSKapitel 8.6 Seite 551.

Dinge, die ich versucht habe

Ich möchte meine CSV-Datei nicht ändern (mit einem Semikolon als Trennzeichen und einem Komma als Dezimaltrennzeichen). Ich verwende sinuitx. Wenn es eine Option gibt, dies auf die Metadaten anzuwenden, wäre das vielleicht eine gute Idee. Ich habe auch versucht, meine Etikettendaten in der CSV-Datei mit {} zu umgeben, aber das hat nicht geholfen.

gruppiertes Balkenzeichen

LaTeX-Code:

% !TeX encoding = UTF-8
\documentclass[11pt, border=5pt]{standalone}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\usepackage{pgfplotstable}
\usepackage{siunitx}
\begin{document}
\begin{tikzpicture}
    \begin{axis}[
            /pgf/number format/.cd,
                use comma,
            height = 7cm,
            width = 8.5cm,
            ymajorgrids,
            ylabel={The mighty Force in \si{\newton}},
            xlabel={A strong Opponent},
            ymin = 0,
            ymax= 1.75,
            ybar=0pt,
            bar width=12pt,
            enlarge x limits = 0.3,
            nodes near coords,
            point meta=explicit symbolic,
            scatter/position=absolute,
            every node near coord/.style={
                    at={(\pgfkeysvalueof{/data point/x},1.8)},
                    anchor=south,
                },
            bar shift=0pt,
            xtick={0,1,2},
            xticklabels={metal,wood,paper},
            x tick label style={rotate=45,anchor=east},
        ]
        \addplot+[bar shift = -12pt]
        plot [error bars/.cd, y dir=both, y explicit]
        table [x=ID, y=A, y error=Aun, col sep=comma] {data.csv};
        \addplot+[bar shift = +12pt]
        plot [error bars/.cd, y dir=both, y explicit]
        table [x=ID, y=B, y error=Bun, col sep=comma] {data.csv}; % Läd die Daten aus der CSV Datei
        \addplot
        plot [error bars/.cd, y dir=both, y explicit]
        table [x=ID, y=C, y error=Cun, col sep=comma] {data.csv}; % Läd die Daten aus der CSV Datei
        \addplot[only marks]
        plot table [x=ID, col sep=comma, meta=label] {data.csv}; % Läd die Daten aus der CSV Datei
    \end{axis}
\end{tikzpicture}
\end{document}

Der Inhalt von data.csv:

ID,A,Aun,B,Bun,C,Cun,label
0,0.2,0.05,0.3,0.025,0.1,0.03,0.2
1,0.6,0.05,0.4,0.07,0.8,0.045,0.6
2,1.1,0.1,1.3,0.02,1.5,0.06,1.3

Antwort1

Ich habe verschiedene Dinge ausprobiert und dabei mehrere Fehler gemacht. Die folgenden beiden sind neben der Lösung wichtig

  • Verwenden Sie keine Datei, die nur Index- und Metadaten enthält
  • Nicht verwenden \pgfplotstabletypesetin tikzpicture,siehe hier

Eine einfache Lösung für mein Problem ist die Änderung des Dateiformats indurch Leerzeichen getrenntund das wars. Den explicit symbolicRest erledigt die Option bereits, um die "neue" .dat-Datei korrekt zu lesen ...

Balkendiagramm mit entsprechenden Metabeschriftungen

verwandte Informationen