Hallo,

ich würde gern eine Achsenbeschriftung wie auf dem Bild in meinem Diagramm haben.

alt text

Leider habe ich keine Ahnung, wie ich die Achsen normal beschriften kann und den vorletzten Wert durch eine Einheit ersetzen kann. Habt ihr eine Idee?

Crosspost: goLatex

Hier das Minimalbeispiel:

Öffne in Overleaf
\documentclass[margin=10mm]{standalone}
\usepackage{siunitx}
\usepackage{pgfplots}
\pgfplotsset{width=16cm,compat=1.15}
\usepackage{amsmath}

\begin{document}

\begin{tikzpicture}
\begin{axis}[
xlabel=Konzentration in $\si{\percent}$ $\xrightarrow{\hspace*{1cm}}$,
ylabel= Oberflächenspannung in $\si{\milli\newton\per\meter}$ $\xrightarrow{\hspace*{1cm}}$,
]
\addplot[mark=o,error bars/.cd,y dir=both,y explicit]coordinates
{
(0,68.40891501)  +- (0,4.778953312) 
(20,63.98903632) +- (0,4.115686076)
(40,60.64486555) +-  (0,6.848451706)
(60,62.39588189) +- (0,7.741357204)
};
\legend{Messung\\}
\end{axis}
\end{tikzpicture}

\end{document}

gefragt 08 Nov '17, 22:10

Patrick1990's gravatar image

Patrick1990
1143711
Akzeptiert-Rate: 0%

bearbeitet 09 Nov '17, 11:48

Wusste ich doch, dass ich so etwas heute morgen schon einmal gesehen habe …. Hinweis: Crossposts sind hier ausdrücklich erlaubt. Es wird aber dringend darum gebeten, sie miteinander zu verlinken. In anderen Foren ist das entweder absolute Pflicht oder Crossposts sind sogar komplett verboten. Meist werden sie mit Verlinkung toleriert, während sie ohne für großen Unmut sorgen.

(09 Nov '17, 11:39) saputello

Notfalls kannst Du die Achsenbeschriftung immer von Hand machen. Dabei geben die Optionen xticks und yticks an, wo beschriftet werden soll. Die Optionen xtickslabels und ytickslabels geben hingegen an, was geschrieben werden soll:

Öffne in Overleaf
\documentclass[margin=10mm]{standalone}
\usepackage{siunitx}
\usepackage{pgfplots}
\pgfplotsset{width=16cm,compat=1.15}
\usepackage{amsmath}

\begin{document}

\begin{tikzpicture}
\begin{axis}[
xlabel=Konzentration in $\si{\percent}$ $\xrightarrow{\hspace*{1cm}}$,
ylabel= Oberflächenspannung in $\si{\milli\newton\per\meter}$
$\xrightarrow{\hspace*{1cm}}$,
xtick={0,20,40,60},
xticklabels={0,20,40,\si{\milli\A}},
ytick={50,55,...,75},
yticklabels={50,55,60,65,\si{\milli\A},75},
]
\addplot[mark=o,error bars/.cd,y dir=both,y explicit]coordinates
{
(0,68.40891501)  +- (0,4.778953312) 
(20,63.98903632) +- (0,4.115686076)
(40,60.64486555) +-  (0,6.848451706)
(60,62.39588189) +- (0,7.741357204)
};
\legend{Messung}
\end{axis}
\end{tikzpicture}

\end{document}

manuelle tickslabels

Man kann das ganze natürlich auch halbautomatisch machen, indem man einen Befehl per xticklabel bzw. yticklabel angibt:

Öffne in Overleaf
\documentclass[margin=10mm]{standalone}
\usepackage{siunitx}
\usepackage{pgfplots}
\pgfplotsset{width=16cm,compat=1.15}
\usepackage{amsmath}

\newcommand*{\usesymbolfor}[2]{%
  \pgfmathifthenelse{\tick==#2}{1}{0}%
  \ifnum \pgfmathresult=1\relax \si{#1}\else $\pgfmathprintnumber{\tick}$\fi
}%

\begin{document}

\begin{tikzpicture}
\begin{axis}[
xlabel=Konzentration in $\si{\percent}$ $\xrightarrow{\hspace*{1cm}}$,
ylabel= Oberflächenspannung in $\si{\milli\newton\per\meter}$
$\xrightarrow{\hspace*{1cm}}$,
xtick={0,20,...,60},
xticklabel={\usesymbolfor{\milli\A}{40}},
ytick={50,55,...,75},
yticklabel={\usesymbolfor{\milli\A}{70}},
]
\addplot[mark=o,error bars/.cd,y dir=both,y explicit]coordinates
{
(0,68.40891501)  +- (0,4.778953312) 
(20,63.98903632) +- (0,4.115686076)
(40,60.64486555) +-  (0,6.848451706)
(60,62.39588189) +- (0,7.741357204)
};
\legend{Messung}
\end{axis}
\end{tikzpicture}
Permanenter link

beantwortet 09 Nov '17, 07:59

gast3's gravatar image

gast3
(ausgesetzt)
Akzeptiert-Rate: 53%

bearbeitet 09 Nov '17, 11:13

Danke, das wusste ich bereits. Hätte mich eventuell besser ausdrücken sollen. Ich würde dieses gern automatisch erstellt haben. Ich habe es bereits geschafft die ticks mit einer for-Schleife zu erstellen und den vorletzten auszulassen. Wenn ich noch eine Schleife mit ticklabels mache und den vorletzten Wert durch ein Wort ergänze funktioniert es nicht ganz, denn alle Sticklabel werden an der Stelle des ersten ticklabels der jeweiligen Achse angezeigt (und nicht an den zugehörigen ticks). Also Eingabe sollen bestenfalls nur Startwert, Endwert, Inkrement und Einheit der jeweiligen Achse sein.

(09 Nov '17, 08:12) Patrick1990

@Patrick1990 Das wäre jetzt eine Folgefrage und natürlich solltet du dann ein passendes VM zeigen, das ggf. auch verdeutlicht, was du (erfolglos) probiert hast.

(09 Nov '17, 10:33) gast3

@Patrick1990 Musst Du viele solcher Diagramme automatisiert erstellen? Wenn es eh nur ein oder zwei in der Arbeit sind, würde ich mir den Kopf nicht darüber zerbrechen sondern es einfach so manuell machen. Sieht ja genauso aus. Apropos: ich finde es spontan als für den Leser eher irreführend, wenn die Einheit an Stelle eines echten Wertes steht, auch noch genau an dem Tick wo ein Wert stehen müsste. Für mich sollten genau gleich aussehende Dinge die gleiche Bedeutung haben und eine Legende sich nicht als Wert tarnen. Das kann man sogar übersehen wenn man es sucht.

(09 Nov '17, 12:08) stefan ♦♦

Danke, so reicht es mir.

(09 Nov '17, 12:42) Patrick1990
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:

×296

gestellte Frage: 08 Nov '17, 22:10

Frage wurde gesehen: 8,083 Mal

zuletzt geändert: 09 Nov '17, 12:42