cambiar el color del punto en coordenadas polares tikz

cambiar el color del punto en coordenadas polares tikz

Actualmente estoy luchando por cambiar el color de puntos individuales en coordenadas polares. Quiero crear una visualización para el espacio de color HSV usando un cilindro.

Gracias aSombreado HSV de cono en pgfplotsHe aprendido que puedes usarlo point meta={symbolic={Hsb=v,u,u}}para obtener el color correcto directamente desde las coordenadas actuales.

Pero cuando lo cambio a un cilindro obtengo muchos

Missing number, treated as zero.
<to be read again> 
LaTeX
Illegal unit of measure (pt inserted).
<to be read again> 
LaTeX

errores.

Mi código actual es:

\documentclass[tikz,border=3mm]{standalone} 
\usepackage{pgfplots}

\begin{document} 
\begin{axis}[axis equal, data cs=polar]
    
    \addplot3 [surf,
                domain=0:1,
                y domain=0:180,
               samples=20, %number of samples taken
               z buffer=sort,
               shader=interp,
               variable=\u,
               variable y=\v,
               point meta={symbolic={Hsb=u,v,v}}] % the origin of my errors
        (
            {v/2},
            {sin(v/2)},
            {u}
        );
    
    \end{axis}
\end{document}

Estoy pensando que podría ser que mi forma hacky de generar el cilindro esté causando los problemas, pero no puedo entenderlo.

gracias de antemano

Respuesta1

¡Veo que arreglaste tu MWE para incluirlo mesh/color input = explicit mathparse,! Para la posteridad, también hubo un problema con el HSB "S" de saturación que requiere un valor en [0,1] al que le estabas pasando \v[0,180].

Sólo por diversión, si quieres un cilindro completo, puedes cambiar el dominio:

\documentclass[tikz,border=3mm]{standalone} 
\usepackage{pgfplots}
\pgfplotsset{compat=newest}

\begin{document} 
\begin{tikzpicture}
    \begin{axis}[axis equal, data cs=polar]
    \addplot3 [
        surf,
        domain = 0:1,
        y domain = 0:360,
        samples = 20, %number of samples taken
        z buffer = sort,
        shader = interp,
        variable = \u, variable y = \v,
        mesh/color input = explicit mathparse,
        point meta={symbolic={Hsb=v,1,u}},
        ] 
        ({v/2},{sin(v/2)},{u});
    \end{axis}    
\end{tikzpicture}
\end{document}

Un cilindro abierto con color HSB Y si quieres un medio cilindro con todo el espectro de colores, simplemente duplica el tono:

\documentclass[tikz,border=3mm]{standalone} 
\usepackage{pgfplots}
\pgfplotsset{compat=newest}

\begin{document} 
\begin{tikzpicture}
    \begin{axis}[axis equal, data cs=polar]
    \addplot3 [
        surf,
        domain = 0:1,
        y domain = 0:180,
        samples = 20, %number of samples taken
        z buffer = sort,
        shader = interp,
        variable = \u, variable y = \v,
        mesh/color input = explicit mathparse,
        point meta={symbolic={Hsb=2*v,1,u}},
        ] 
        ({v/2},{sin(v/2)},{u});
    \end{axis}    
\end{tikzpicture}
\end{document}

Un medio cilindro abierto con color HSB

Respuesta2

Miré nuevamente el código deSombreado HSV de cono en pgfplotsy descubrí que me faltaba agregar mesh/color input=explicit mathparseopciones a mi eje.

El código de trabajo es:

\documentclass[tikz,border=3mm]{standalone} 
\usepackage{pgfplots}

\begin{document} 
\begin{tikzpicture}

    \begin{axis}[axis equal, data cs=polar, mesh/color input=explicit mathparse] % the solution to my problem
    
    \addplot3 [surf,
                domain=0:1,
                y domain=0:180,
               samples=20, %number of samples taken
               z buffer=sort,
               shader=interp,
               variable=\u,
               variable y=\v,
               point meta={symbolic={Hsb=v,1,u}}]
        (
            {v/2},
            {sin(v/2)},
            {u}
        );
    
    \end{axis}
    
\end{tikzpicture}
\end{document}

Imagen compilada

información relacionada