pgfplots - So erstellen Sie ein horizontales Liniendiagramm in einem Balkendiagramm mit symbolischen Beschriftungen für die X-Achse

pgfplots - So erstellen Sie ein horizontales Liniendiagramm in einem Balkendiagramm mit symbolischen Beschriftungen für die X-Achse

Ich habe mich gefragt, ob es eine Möglichkeit gibt, die Liniendiagramme „Unseamed“ und „Requirement“ so zu gestalten, dass sie sich über die gesamte Breite des Diagramms erstrecken und nicht nur von den Mittelpunkten der ersten und letzten X-Achsenbeschriftungen aus. Gibt es eine Möglichkeit, unsichtbare X-Achsenbeschriftungen zu erstellen, um dies zu erreichen?

\documentclass[a4paper,10pt]{report}

\usepackage{pgfplots}
\usetikzlibrary{patterns}


\begin{document}

\begin{figure}
 \centering

\begin{tikzpicture}
\begin{axis}[width=11cm,
ybar,
enlargelimits=0.3,legend style={at={(0.98,0.98)},
cells={anchor=west}
},
legend entries={Straight,Unseamed,Zigzag,Requirement},
bar width=1cm,legend columns=2,
ylabel={Tensile strength{,} $N\,mm^{-1}$},
symbolic x coords={Plain,Single lap,Double lap},
xtick=data,
ytick={0,2,4,6,8,10,12,14},
x tick label style={rotate=45,anchor=east},
]

\addplot [draw=black,pattern=crosshatch dots,error bars/.cd,y dir=both,y explicit,error bar style={line width=1pt}] 
coordinates
{
(Plain,7)+-(0.41,0.41)
(Single lap,11)+-(0.27,0.27)
(Double lap,12)+-(0.47,0.47)
};

\addplot[black,sharp plot]
coordinates {(Plain,10.857) (Double lap,10.857)}
;

\addplot [draw=black,error bars/.cd,y dir=both,y explicit,error bar style={line width=1pt}] 
coordinates
{
(Plain,4)+-(0.31,0.31)
(Single lap,5)+-(0.27,0.27)
(Double lap,6)+-(0.38,0.38)
};

\addplot[black,sharp plot,dashed]
coordinates {(Plain,3.430) (Double lap,3.430)}
;

\end{axis}
\end{tikzpicture}

\end{figure}

\end{document}

Antwort1

Dies lässt sich auf etwas umständliche Weise erreichen. Fügen Sie zunächst \coordinatebei (Plain,3.43)und (Plain, 10.857)und in den unteren Ecken s mit dem rel axis csKoordinatensystem hinzu und zeichnen Sie dann Linien mit diesen Koordinaten als Referenz. Legendeneinträge werden mit hinzugefügt \addlegendimage.

Beachten Sie, dass Einheiten im Allgemeinen nicht kursiv geschrieben werden sollten. Daher wird eine Änderung an dieser Stelle empfohlen. Sie könnten dies tun $\mathrm{N}\,\mathrm{mm}^{-1}$, aber eine bessere Möglichkeit zum Umgang mit Einheiten ist das siunitxPaket, mit dem Sie schreiben können \si{\newton\per\square\milli\metre}. Darüber hinaus kann ich die unitsBibliothek von erwähnen pgfplots, deren Funktionen mit siunitxwie im folgenden Code (aus dem pgfplotsHandbuch entnommen) kombiniert werden können.

Bildbeschreibung hier eingeben

\documentclass[border=2mm,tikz]{standalone}

\usepackage{pgfplots}
\usepgfplotslibrary{units}
\pgfplotsset{unit code/.code 2 args={\si{#1#2}}}
\usetikzlibrary{patterns}
\usepackage{siunitx}

\begin{document}

\begin{tikzpicture}
\begin{axis}[width=11cm,
ybar,
y unit=\newton\per\square\milli\metre,
enlargelimits=0.3,
legend style={
at={(0.98,0.98)},
cells={anchor=west},
column 3/.style={width=2cm}
},
legend entries={Straight,Unseamed,Zigzag,Requirement},
bar width=1cm,legend columns=2,
ylabel={Tensile strength},
symbolic x coords={Plain,Single lap,Double lap},
xtick=data,
ytick={0,2,4,6,8,10,12,14},
x tick label style={rotate=45,anchor=east},
]

\addplot [draw=black,pattern=crosshatch dots,error bars/.cd,y dir=both,y explicit,error bar style={line width=1pt}] 
coordinates
{
(Plain,7)+-(0.41,0.41)
(Single lap,11)+-(0.27,0.27)
(Double lap,12)+-(0.47,0.47)
};

\addlegendimage{line legend,black,sharp plot}

\addplot [draw=black,error bars/.cd,y dir=both,y explicit,error bar style={line width=1pt}] 
coordinates
{
(Plain,4)+-(0.31,0.31)
(Single lap,5)+-(0.27,0.27)
(Double lap,6)+-(0.38,0.38)
};

\addlegendimage{line legend,black,sharp plot,dashed}


\coordinate (A) at (axis cs:Plain,3.430);
\coordinate (B) at (axis cs:Plain,10.857);
\coordinate (O1) at (rel axis cs:0,0);
\coordinate (O2) at (rel axis cs:1,0);

\draw [black,sharp plot,dashed] (A -| O1) -- (A -| O2);
\draw [black,sharp plot] (B -| O1) -- (B -| O2);


\end{axis}
\end{tikzpicture}

\end{document}

verwandte Informationen