Zecken unter Tikz

Zecken unter Tikz

Hier ist mein minimaler Code

\documentclass[a4paper,11pt]{standalone}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{float,caption}
\usepackage{microtype}
\usepackage{bbold}
\usepackage{tikz}
\usepackage{subfig}
\usepackage{pgfplots,pgfplotstable}

\pgfplotstableread{
x         y    error
-4.0  0.0296647842303  0.0291503887869
-3.0  0.0293603640735  0.0141878426016
-2.0  0.0286685720323  0.00649661240084
-1.0  0.0275361528438  0.00210364869319
2.0  0.0266314574388  0.00148277554508
3.0  0.0277962098809  0.00421008334229
4.0  0.0291488821404  0.00849079074145
}{\exp}

\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin=-4.5,
    xmax=4.5,
    ymin=0,
    ymax=0.06,
    axis background/.style={fill=white},
    ylabel=$\delta(q)$,
    xlabel=moment $q$,
    legend columns=3,
    yticklabels={,,}
 ]
 \addplot[color=green,thin,error bars/.cd,y dir=both, y explicit] table[x=x,y=y,y error=error]  {\exp};     
 \end{axis} 
 \end{tikzpicture}
 \end{document}

und da ist meine Figur

Bildbeschreibung hier eingeben

Ich möchte zwei Dinge an dieser Abbildung ändern: (1) Erstens (und das ist das Wichtigste) möchte ich diesen Pseudo-Tick „10^-2“ oben in der Abbildung nicht, ich hätte gerne Dezimalzahlen (0,002, 0,004, 0,006) als Y-Label. (2) Zweitens (das ist weniger wichtig) möchte ich einen Fehlerbalken nur für x=-4 und x=4 (zum Beispiel).

Antwort1

Beachten Sie, dass Sie, wenn Sie eine der einzelnen Fragen (oder beide in separaten Posts) gestellt hätten, höchstwahrscheinlich noch am selben Tag eine Antwort auf Ihre Frage(n) erhalten hätten.

Für das erste Problem verwenden Sie scaled y ticks=false. Dies ist erforderlich, da Sie das Häkchen auf Null setzen.Etikettenmit yticklabels={,,}(was mir yticklabels=\emptyübrigens am besten gefallen würde: es funktioniert unabhängig davon, wie viele Markierungen im Diagramm vorhanden sind), aber die Markierungen selbst werden trotzdem platziert, was bedeutet, dass die Skalierung wirksam sein kann.

Wenn Sie die Häkchen selbst entfernen möchten, verwenden Sie einfach ytick=emptyanstelle von scaled y ticks=false,yticklabels={,,}.

Für die Fehlerbalken besteht die schnelle und einfache Lösung darin, die unerwünschten Einträge aus der Tabelle zu entfernen. Aber ich gehe davon aus, dass Ihr tatsächlicher Anwendungsfall viel mehr Einträge hat. Wir können eine neue Spalte (genannt error-proc) in der Tabelle erstellen \expmit

\pgfplotstablecreatecol[
  <assignments>
]
{error-proc}{\exp}

Dieser <assignments>Teil konzentriert sich darauf, nur die erste und letzte Zeile zu erfassen errorund nur diese Elemente in unsere neue Spalte zu kopieren error-proc:

\pgfplotstablecreatecol[
  create col/assign first/.code={%
    \getthisrow{error}\entry
    \pgfkeyslet{/pgfplots/table/create col/next content}\entry
  },
  create col/assign last/.code={%
    \getthisrow{error}\entry
    \pgfkeyslet{/pgfplots/table/create col/next content}\entry
  },
]
{error-proc}{\exp}

y error=errorÄndern Sie dann einfach y error=error-procin Ihrem \addplotBefehl:

\documentclass{standalone}
\usepackage{pgfplots,pgfplotstable}
\pgfplotsset{compat=1.12}

\pgfplotstableread{
x     y                error
-4.0  0.0296647842303  0.0291503887869
-3.0  0.0293603640735  0.0141878426016
-2.0  0.0286685720323  0.00649661240084
-1.0  0.0275361528438  0.00210364869319
 2.0  0.0266314574388  0.00148277554508
 3.0  0.0277962098809  0.00421008334229
 4.0  0.0291488821404  0.00849079074145
}{\exp}
\pgfplotstablecreatecol[
  create col/assign first/.code={%
    \getthisrow{error}\entry
    \pgfkeyslet{/pgfplots/table/create col/next content}\entry
  },
  create col/assign last/.code={%
    \getthisrow{error}\entry
    \pgfkeyslet{/pgfplots/table/create col/next content}\entry
  },
]
{error-proc}{\exp}

\begin{document}
\begin{tikzpicture}
\begin{axis}[
  xmin=-4.5,
  xmax=4.5,
  ymin=0,
  ymax=0.06,
  axis background/.style={fill=white},
  ylabel=$\delta(q)$,
  xlabel=moment $q$,
  yticklabels=\empty,
  scaled y ticks=false,
]
\addplot[error bars/.cd,y dir=both, y explicit] table[x=x,y=y,y error=error-proc]  {\exp};
\end{axis} 
\end{tikzpicture}
\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen