Gráfico de carcaj con puntos de muestra polares

Gráfico de carcaj con puntos de muestra polares

¿Cómo puedo cambiar el siguiente gráfico de que los puntos de muestra están en un sistema de coordenadas polares, es decir, en círculos concéntricos equidistantes en lugar de una cuadrícula cartesiana?

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{
  compat=newest,
  }
\begin{document}

\begin{tikzpicture}
  \begin{axis}[
    domain=-10:10,
    samples=20,
    xmin=-10,xmax=10,
    ymin=-10,ymax=10,
    zmin=-20,zmax=20,
    point meta=z,
    height=20cm,
    width=15cm,
    view={45}{45}
    ]
    \pgfplotsinvokeforeach{-20,0,20}{
     \begin{scope}
      \clip plot[smooth cycle,variable=\t,domain=0:355] ({7*cos(\t)},{7*sin(\t)},#1);
      \addplot3[quiver,-stealth,
      quiver={
        u={-y/(x^2+y^2)},
        v={x/(x^2+y^2)},
        w={0},
        scale arrows=10,
        colored=mapped color
      }, 
      ]
      (x,y,#1);
      \end{scope} 
    }
    \draw[ultra thick] (0,0,-20) -- (0,0,20);
    % 
   \end{axis}
\end{tikzpicture}
\end{document}

ingrese la descripción de la imagen aquí

Respuesta1

Esto esnouna respuesta seria. Todo lo que quería hacer es descubrir si se puede hackear el carcaj. Parece posible hasta cierto punto.

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{
  compat=newest,
  }
\begin{document}
\makeatletter
\pgfplotsset{quiver/tikz to/.code={\def\pgfplotsplothandlerquiver@vis@path##1{%
        %\pgfpathmoveto{##1}%
        \pgfplotsaxisvisphasetransformcoordinate\pgfplots@quiver@u\pgfplots@quiver@v\pgfplots@quiver@w
        \pgfplotsifcurplotthreedim{%
                \pgfcoordinate{quiver@from}{\pgfplotsqpointxyz\pgfplots@current@point@x\pgfplots@current@point@y\pgfplots@current@point@z}%
        }{%
                \pgfcoordinate{quiver@from}{\pgfplotsqpointxy\pgfplots@current@point@x\pgfplots@current@point@y}%
        }%
        \pgfplotsifcurplotthreedim{%
                \pgfcoordinate{quiver@target}{\pgfplotsqpointxyz\pgfplots@quiver@u\pgfplots@quiver@v\pgfplots@quiver@w}%
        }{%
                \pgfcoordinate{quiver@target}{\pgfplotsqpointxy\pgfplots@quiver@u\pgfplots@quiver@v}%
        }%
        \pgfpathmoveto{\pgfpointanchor{quiver@from}{center}}%
        \tikzset{insert path={(quiver@from) to
        (quiver@target)}}%
}}}%

\makeatother

\begin{tikzpicture}
  \begin{axis}[
    domain=-10:10,
    samples=20,
    xmin=-10,xmax=10,
    ymin=-10,ymax=10,
    zmin=-20,zmax=20,
    point meta=z,
    height=20cm,
    width=15cm,
    view={45}{45}
    ]
    \pgfplotsinvokeforeach{-20,0,20}{
     \begin{scope}
      %\clip plot[smooth cycle,variable=\t,domain=0:355] ({7*cos(\t)},{7*sin(\t)},#1);
      \addplot3[quiver,-stealth,
      quiver={every arrow/.append style={every to/.style={bend right=15}},
        u={-y/(x^2+y^2)},
        v={x/(x^2+y^2)},
        w={0},
        scale arrows=10,
        colored=mapped color,
        tikz to
      }, 
        x filter/.expression={x*x+y*y<9 || x*x+y*y > 49 ? nan:x},
      ]
      (x,y,#1);
      \end{scope} 
    }
    \draw[ultra thick] (0,0,-20) -- (0,0,20);
    % 
   \end{axis}
\end{tikzpicture}
\end{document}

ingrese la descripción de la imagen aquí

Esto no significa que uno no pueda obtener el resultado que tiene en mente. Podría simplemente significar que otros enfoques pueden ser más fáciles. Por ejemplo,

\documentclass{article}
\usepackage{pgfplots}
\usetikzlibrary{3d,arrows.meta,bending}
\pgfplotsset{
  compat=newest,
  }
\begin{document}    
\begin{tikzpicture}
  \begin{axis}[
    domain=-10:10,
    samples=20,
    xmin=-10,xmax=10,
    ymin=-10,ymax=10,
    zmin=-20,zmax=20,
    point meta=z,
    height=20cm,
    width=15cm,
    view={45}{45}
    ]
    \pgfplotsinvokeforeach{-20,0,20}{\begin{scope}[canvas is xy plane at z=#1]
     \foreach \X in {3,...,7}
      {\foreach \Y in {1,...,20}
       {\edef\temp{\noexpand\draw[semithick,-{Stealth[bend]},
        color of colormap=500+25*#1] 
       (\Y*18:\X) arc[start angle=\Y*18,end angle=\Y*18+9,radius=\X];}
       \temp}}
    \end{scope}}
    \draw[ultra thick] (0,0,-20) -- (0,0,20);
    % 
   \end{axis}
\end{tikzpicture}
\end{document}

ingrese la descripción de la imagen aquí

Respuesta2

Aquí está la idea de@El gato de Schrödingeradaptado al campo vectorial de la publicación original junto con algunas modificaciones

  • No quería que las flechas se doblaran.
  • La densidad de la cuadrícula aumenta al aumentar el radio.
  • Se cambiaron los nombres de las variables polares para una mejor lectura.
  • Algunos cambios cosméticos menores.
\documentclass{article}
\usepackage{pgfplots}
\usetikzlibrary{3d,arrows.meta,bending}
\pgfplotsset{
  compat=newest,
  }
\begin{document}    
\begin{tikzpicture}
  \begin{axis}[
    domain=-10:10,
    samples=20,
    xmin=-5,xmax=5,
    ymin=-5,ymax=5,
    zmin=-26,zmax=26,
    point meta=z,
    height=20cm,
    width=15cm,
    view={45}{30},
    %axis lines=none
    ]
    \pgfplotsinvokeforeach{-20,0,20}{\begin{scope}[canvas is xy plane at z=#1]
    \foreach \PHI in {1,...,4}{
      \foreach \R in {0,50/\PHI,...,349}{
        \edef\temp{\noexpand\draw[very thick,-{Stealth[scale=0.5]},opacity=0.5,
          color of colormap=500+25*#1] 
          (\R:\PHI) -- ++({1*sin(\R)/\PHI},{-1*cos(\R)/\PHI});
        }
        \temp}
    }
    \end{scope}

    \foreach \PHI in {1,...,4}{
      \edef\temp{\noexpand\draw[dotted,opacity=0.5,
          color of colormap=500+25*#1] 
          (0,0,#1) circle (\PHI);
        }
        \temp
      }

  }
    \draw[ultra thick] (0,0,-40) -- (0,0,40);
    % 
   \end{axis}
\end{tikzpicture}
\end{document}

Producción:

ingrese la descripción de la imagen aquí

información relacionada