Como dar a vários eixos o mesmo estilo/opções

Como dar a vários eixos o mesmo estilo/opções

Eu gostaria de examinar sua mente novamente sobre uma pequena questão.

Quero usar tikzstylepara descrever o estilo de vários gráficos, mas quando copio e colo o estilo que uso no meu gráfico, recebo um erro de compilação.

Código de trabalho:

\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}

Agora , coloco o estilo do meu e semilogaxisdigitotikzstyle{Bode}Bode

\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]

e me dá esse erro:

! 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}

Pode me ajudar ?

Responder1

\tikzstyle{foo}=[..]ou a substituição \tikzset{foo/.style={..}}parece na /tikzfamília de chaves, mas width, heighte os outros axisparâmetros pertencem à /pgfplotsfamília, então você recebe um erro /tikz/widthdesconhecido.

Em vez disso, você pode usar \pgfplotsset{foo/.style={..}}, então as chaves serão consideradas da /pgfplotsfamília.

A propósito, em geral seria melhor usar \newcommandem vez de \def, porque assim você não substituirá acidentalmente as macros existentes.

\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}

informação relacionada