Positionierung von Tikzpicture und Bestimmung des Achsenbereichs

Positionierung von Tikzpicture und Bestimmung des Achsenbereichs

Bei einer anderen Frage bekam ich tolle Hilfe beim Erstellen dieses Bildes:

Balkendiagramm

Eigentlich sieht es so aus, wie es sollte, aber es gibt noch zwei weitere Dinge, die ich klarstellen möchte:

zuerst, erhalte ich diese Warnung: Axis range for axis x is approximately empty; enlarging it (it is [0.0:0.0]). Ich habe versucht, den Bereich zu bestimmen, kann aber keinen Wert für xmax finden, bei dem alle Balken weiterhin sichtbar bleiben.

Undzweitens, wie kann ich die Position des Bildes bestimmen? zB linksbündig? Jegliche Versuche mit \flushleft und \raggedright endeten erfolglos.

Mir ist etwas aufgefallen, als ich Strg+Klick gedrückt habe \end{axis}: Ich schätze, da läuft etwas schief. Ich habe keine Ahnung, was dort jenseits der Grenze passiert ...

Balkendiagrammfehler

\documentclass[paper=a4, parskip=half-, draft]{scrreprt}

\tolerance=2000
\emergencystretch=1em
\hfuzz=2pt
\usepackage[ngerman]{babel} 
\usepackage[utf8]{inputenx}
\usepackage[T1]{fontenc}
\usepackage{lmodern}

\usepackage{graphicx}
\usepackage{tikz}
\usepackage{pgfplots}
\usetikzlibrary{shapes,arrows,positioning,shadows,trees}
\pgfplotsset{compat=1.7}    %bestimmt exakte version zur gleichen

\setlength{\parindent}{0pt}
\begin{document}
        \begin{figure}[!h]
            \begin{tikzpicture}[scale=0.8]
            \begin{axis}[
            title=\textbf{Aus welchen Gründen wurde eLearning in Ihrem Klinikum implementiert?},
            ybar=15,            %Abstand zwischen den Balken
            ymin=0,
            ymax=50,            %maximale Diagrammhöhe
            xmin=0,
            xmax=,
            %ymajorgrids,       %Horizontale Guidelines
            bar width=30pt,     %Balkenbreite
            xtick=\empty,       %keine kleinen Striche auf x achse
            nodes near coords={\pgfmathprintnumber\pgfplotspointmeta \%},           %Fügt Prozent an
            nodes near coords align={vertical},
            legend style={
                legend pos=outer north east,
                row sep=10pt,
                /tikz/nodes={text width=135pt,text depth=}
            }]

            \addplot coordinates{(0,31.1)};
            \addlegendentry{Aufgrund der gesetzlichen Nachweispflicht (Brandschutz, Arbeitsschutz, etc.)}

            \addplot coordinates{ (0,17.8)};
            \addlegendentry{Einweisung zur Nutzung medizinischer Geräte}

            \addplot coordinates{ (0,44.4)};
            \addlegendentry{Zur generellen zeit- und ortsungebundenen Weiterbildung von Mitarbeitern}

            \addplot coordinates{ (0,6.7)};
            \addlegendentry{Sonstige}

            \end{axis}
            \end{tikzpicture}
        \end{figure}

\end{document}

Ich freue mich über jede Hilfe!

Antwort1

Erstens: Sie können die Warnung ignorieren oder xminund xmaxsymmetrisch auf setzen 0. Beispiel: xmin=-1und xmax=1.

Zweitens: Der Begrenzungsrahmen Ihres Bildes wird durch den langen Plottitel nach links vergrößert. Damit \raggedrightist der Plottitel linksbündig ausgerichtet. Sie müssen also die Position des Plottitels ändern.

Bildbeschreibung hier eingeben

Code:

\documentclass[paper=a4, parskip=half-, draft]{scrreprt}
\usepackage{showframe}% show the page layout

\usepackage[ngerman]{babel} 
\usepackage[utf8]{inputenx}
\usepackage[T1]{fontenc}
\usepackage{lmodern}

\usepackage{pgfplots}
\pgfplotsset{compat=1.7}    %bestimmt exakte version zur gleichen

%\setlength{\parindent}{0pt}% <- not needed because you use parskip=half- option
\begin{document}
\begin{figure}[!h]
    \begin{tikzpicture}[scale=0.8]
    \begin{axis}[
    title=\textbf{Aus welchen Gründen wurde eLearning in Ihrem Klinikum implementiert?},
    title style={at={(0,1)},anchor=south west,inner xsep=0pt},% <- added
    ybar=15,            %Abstand zwischen den Balken
    ymin=0,
    ymax=50,            %maximale Diagrammhöhe
    xmin=-1,% <-changed
    xmax=1,% <- changed
    %ymajorgrids,       %Horizontale Guidelines
    bar width=30pt,     %Balkenbreite
    xtick=\empty,       %keine kleinen Striche auf x achse
    nodes near coords={\pgfmathprintnumber\pgfplotspointmeta \%},           %Fügt Prozent an
    nodes near coords align={vertical},
    legend style={
        legend pos=outer north east,
        row sep=10pt,
        /tikz/nodes={text width=135pt,text depth=}
    }]

    \addplot coordinates{(0,31.1)};
    \addlegendentry{Aufgrund der gesetzlichen Nachweispflicht (Brandschutz, Arbeitsschutz, etc.)}

    \addplot coordinates{ (0,17.8)};
    \addlegendentry{Einweisung zur Nutzung medizinischer Geräte}

    \addplot coordinates{ (0,44.4)};
    \addlegendentry{Zur generellen zeit- und ortsungebundenen Weiterbildung von Mitarbeitern}

    \addplot coordinates{ (0,6.7)};
    \addlegendentry{Sonstige}

    \end{axis}
    \end{tikzpicture}
\end{figure}
\end{document}

Oder wenn der Plottitel zentriert auf dem Plot stehen sollUndLegende

Bildbeschreibung hier eingeben

Code:

\documentclass[paper=a4, parskip=half-, draft]{scrreprt}
\usepackage{showframe}% show the page layout

\usepackage[ngerman]{babel} 
\usepackage[utf8]{inputenx}
\usepackage[T1]{fontenc}
\usepackage{lmodern}

\usepackage{pgfplots}
\pgfplotsset{compat=1.7}    %bestimmt exakte version zur gleichen

%\setlength{\parindent}{0pt}% <- not needed because you use parskip=half- option
\begin{document}
\begin{figure}[!h]
    \begin{tikzpicture}[scale=0.8]
    \begin{axis}[
    %title=\textbf{Aus welchen Gründen wurde eLearning in Ihrem Klinikum implementiert?},% <- removed
    ybar=15,            %Abstand zwischen den Balken
    ymin=0,
    ymax=50,            %maximale Diagrammhöhe
    xmin=-1,% <-changed
    xmax=1,% <- changed
    %ymajorgrids,       %Horizontale Guidelines
    bar width=30pt,     %Balkenbreite
    xtick=\empty,       %keine kleinen Striche auf x achse
    nodes near coords={\pgfmathprintnumber\pgfplotspointmeta \%},           %Fügt Prozent an
    nodes near coords align={vertical},
    legend style={
        legend pos=outer north east,
        row sep=10pt,
        /tikz/nodes={text width=135pt,text depth=}
    }]

    \addplot coordinates{(0,31.1)};
    \addlegendentry{Aufgrund der gesetzlichen Nachweispflicht (Brandschutz, Arbeitsschutz, etc.)}

    \addplot coordinates{ (0,17.8)};
    \addlegendentry{Einweisung zur Nutzung medizinischer Geräte}

    \addplot coordinates{ (0,44.4)};
    \addlegendentry{Zur generellen zeit- und ortsungebundenen Weiterbildung von Mitarbeitern}

    \addplot coordinates{ (0,6.7)};
    \addlegendentry{Sonstige}

    \end{axis}
    \node[anchor=south,font=\bfseries\footnotesize]at (current bounding box.north){Aus welchen Gründen wurde eLearning in Ihrem Klinikum implementiert?};% <- added
    \end{tikzpicture}
\end{figure}
\end{document}

verwandte Informationen