So geben Sie mehreren Achsen den gleichen Stil/die gleichen Optionen

So geben Sie mehreren Achsen den gleichen Stil/die gleichen Optionen

Zu einer kleinen Angelegenheit würde ich Sie gern noch einmal um Rat fragen.

Ich möchte es verwenden, tikzstyleum den Stil mehrerer Diagramme zu beschreiben, aber wenn ich den Stil, den ich in meinem Diagramm verwende, kopiere und einfüge, erhalte ich einen Kompilierungsfehler.

Funktionierender Code:

\documentclass{standalone}
\usepackage{pgfplots}

\begin{document}

\def\T{10}
\def\K{10}

\begin{tikzpicture}
    \tikzstyle{Bode}=[]
    \tikzstyle{Asymp}=[red,densely dashed,thick=1pt]
    \tikzstyle{LieuReel}=[thick=1pt]

    \def\FloorW{floor(ln(1/\T)/ln(10))}
    \def\CeilW{ceil(ln(1/\T)/ln(10))}
    \def\GdbK{20*ln(\K)/ln(10)}

    \begin{semilogxaxis}[height=5cm,width=10cm,xlabel=$\omega$,ylabel=$G_{dB}$,grid=both,axis x line=bottom, axis y line = left,ymax=(\GdbK+4),xmax=10^(\CeilW+2.2)]

        \addplot [domain=(10^(\FloorW-2)):(10^(\CeilW+2)),samples=50] {\GdbK-(10*(ln(\T^2*x^2+1)))/ln(10)}[LieuReel];

        \addplot [domain=(10^(\FloorW-2)):(1/\T),samples=2] {\GdbK}[Asymp];
        \addplot [domain=(1/\T):(10^(\CeilW+2)),samples=2] {\GdbK-(10*(ln(\T^2*x^2)))/ln(10)}[Asymp]; 
    \end{semilogxaxis}
\end{tikzpicture}

\end{document}

Jetzt füge ich den Stil meines semilogaxisin das tikzstyle{Bode}ein und tippe Bodeihn stattdessen

\tikzstyle{Bode}=[height=5cm,width=10cm,xlabel=$\omega$,ylabel=$G_{dB}$,grid=both,axis x line=bottom, axis y line = left,ymax=(\GdbK+4),xmax=10^(\CeilW+2.2)]
     ...
\begin{semilogxaxis}[Bode]

und ich erhalte diesen Fehler:

! Package pgfkeys Error: I do not know the key '/tikz/height', to which you passed '5cm', and I am going to ignore it. Perhaps you misspelled it.See the pgfkeys package documentation for explanation.Type H <return> for immediate help.... \end{semilogxaxis}

Kannst du mir helfen ?

Antwort1

\tikzstyle{foo}=[..]oder der Ersatz \tikzset{foo/.style={..}}sucht in der /tikzSchlüsselfamilie, aber widthund heightdie anderen axisParameter gehören zur Familie, sodass Sie einen unbekannten /pgfplotsFehler erhalten ./tikz/width

Stattdessen können Sie verwenden \pgfplotsset{foo/.style={..}}. Dann wird davon ausgegangen, dass sich die Schlüssel in der /pgfplotsFamilie befinden.

Übrigens ist es generell besser, \newcommandanstelle von zu verwenden \def, da Sie dann nicht versehentlich vorhandene Makros überschreiben.

\documentclass{standalone}
\usepackage{pgfplots}

\begin{document}

\newcommand\T{10}
\newcommand\K{10}

\begin{tikzpicture}[
  Asymp/.style={red,densely dashed,thick=1pt},
  LieuReel/.style={thick=1pt}
  ]


    \newcommand\FloorW{floor(ln(1/\T)/ln(10))}
    \newcommand\CeilW{ceil(ln(1/\T)/ln(10))}
    \newcommand\GdbK{20*ln(\K)/ln(10)}
    \pgfplotsset{
       bode/.style={
          height=5cm,
          width=10cm,
          xlabel=$\omega$,
          ylabel=$G_{dB}$,
          grid=both,
          axis x line=bottom,
          axis y line = left,
          ymax=(\GdbK+4),
          xmax=10^(\CeilW+2.2)}
          }
    \begin{semilogxaxis}[bode]

        \addplot [domain=(10^(\FloorW-2)):(10^(\CeilW+2)),samples=50] {\GdbK-(10*(ln(\T^2*x^2+1)))/ln(10)}[LieuReel];

        \addplot [domain=(10^(\FloorW-2)):(1/\T),samples=2] {\GdbK}[Asymp];
        \addplot [domain=(1/\T):(10^(\CeilW+2)),samples=2] {\GdbK-(10*(ln(\T^2*x^2)))/ln(10)}[Asymp]; 
    \end{semilogxaxis}
\end{tikzpicture}

\end{document}

verwandte Informationen