
Me gustaría dibujar la combinación de dos diagramas. Aquí está mi código para el origen:
\documentclass{article}
\usepackage{pgfplots}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{tkz-euclide}
%\pgfplotsset{compat=newest} %<------ Here
\pgfplotsset{compat=1.11} %<------ Or use this one
\begin{document}
\begin{center}
\begin{tikzpicture}[scale=1.5][x=1cm,y=1cm]
\begin{axis}[xtick={-5,-4,-3,-2,-1,0,1,2,3,4,5}, ytick={-5,-4,-3,-2,-1,0,1,2,3,4,5},
xmin=-5, xmax=5, ymin=-5, ymax=5, grid=major,
xlabel={Galactic longitude $\ell$ in degree},
ylabel={Galactic latitude $b$ in degree},
axis lines = left,
axis line style={->}]
% rectangle
\draw[blue] (0,0) circle[radius=1];
\draw[blue] (0,0) circle[radius=2];
\draw[blue] (0,0) circle[radius=3];
\draw[blue] (0,0) circle[radius=4];
\draw[blue] (0,0) circle[radius=5];
\end{axis}
\end{tikzpicture}
\end{center}
\end{document}
Intenté dibujar círculos concéntricos pero terminé con óvalos. ¿Me gustaría saber cómo se puede solucionar esto?
Aquí está el segundo tema, me gustaría poner un parche rectangular siguiendo la imagen:
Estoy luchando con estos dos: convertir óvalos en círculos y colocarles un parche rectangular.
Respuesta1
Puedes utilizar lo siguiente:
\documentclass[tikz, border=2mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}[scale=1.5]
\begin{axis}[
xmin=-5, xmax=5, ymin=-5, ymax=5, grid=major,
xtick={-5,...,5}, ytick={-5,...,5},
unit vector ratio = 1 1,
xlabel={Galactic longitude $\ell$ in degree},
ylabel={Galactic latitude $b$ in degree},
axis lines = left,
axis line style={->},
clip=false]
\pgfplotsinvokeforeach {1,...,5} {
\draw[blue] (0,0) circle[radius=#1];
}
\draw[green, thick, fill=white] (-5,-0.5) rectangle (5,0.5);
\end{axis}
\end{tikzpicture}
\end{document}
Notas:
no pase varios argumentos opcionales a
tikzpicture
(\begin{tikzpicture}[scale=1.5][x=1cm,y=1cm]
es incorrecto, mejor use algo como\begin{tikzpicture}[scale=1.5, x=1cm,y=1cm]
);pgfplots
El nivel de compatibilidad 1.11 es un poco antiguo, lo subí a 1.16.\pgfplotsset{compat=newest}
Puede estar bien cuando estás trabajando activamente en una trama y vas a solucionar todos los problemas, peroentoncesCodifique mejor una versión para garantizar que su trama no produzca silenciosamente un resultado diferente en el futuro cuando la vuelva a compilar.
En esencia, decir\pgfplotsset{compat=1.16}
significa: “He verificado que este gráfico funciona bien conpgfplots
el nivel de compatibilidad 1.16, quiero tener el mismo comportamiento cada vez que recompilo. Solo cuando esté listo para solucionar los problemas potenciales introducidos por los cambios,pgfplots
cambiaré a un nivel de compatibilidad más nuevo (cuandopgfplots
salgan versiones más recientes; 1.16 es la última en este momento)”.Usé un
\pgfplotsinvokeforeach
bucle para dibujar los círculos;Dibujé el rectángulo usando el
axis cs
sistema de coordenadas implícito (implícito desde el nivel de compatibilidad 1.11);Lo dibujé después de los círculos para asegurarme de que su relleno cubra los círculos y la cuadrícula;
Utilicé la opción
unit vector ratio = 1 1
para asegurarme de que las unidades en cada eje estén representadas con la misma longitud (esto es lo que hace que los círculos sean círculos reales en lugar de elipses).clip=false
garantiza que los lados izquierdo y derecho del rectángulo verde no se recorten (de lo contrario, se recortaría la mitad del ancho de la línea; pruébelo).
Se podría usar otro sistema de coordenadas para dibujar el parche rectangular, este es rel axis cs
(verSistema de coordenadas eje rel csen elmanual de diagramas de pgf). En este caso, las coordenadas no corresponderían a los valores de sus datos; en su lugar, el rango [0,1] se asignaría a los rangos cubiertos por cada uno de los ejes del gráfico (Xyyaquí, pero esto también funciona con gráficos 3D). En otras palabras, el rectángulo verde también podría dibujarse de esta manera:
\draw[green, thick, fill=white]
(rel axis cs:0,0.45) rectangle (rel axis cs:1,0.55);