Considere el siguiente MWE, donde se traza un ejemplo de función seno:
\documentclass[border=2mm,tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{intersections}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[width=\textwidth,
xmin=-0.1, xmax=10.5,
ymin=-1.9, ymax=1.9,
axis lines=middle,
x axis line style={name path=xaxis}]
\addplot[name path global=plot1,domain=0:10, samples=101]{sin(deg(x))};
\path [draw,name intersections={of={plot1 and xaxis}}]
(intersection-1) node (A) {}
(intersection-2) node (B) {}
(intersection-3) node (C) {}
(intersection-4) node (D) {};
\end{axis}
\end{tikzpicture}
\end{document}
Determina los puntos donde la gráfica intersecta el eje x y no puedo ejecutarlo antes de definir los ejes. ¿Es posible definir marcas adicionales en el eje x en estos puntos de intersección? Si es así, ¿cómo?
Editar: Por supuesto, esta pregunta está relacionada con funciones no bien conocidas, cuyos ceros no pueden determinarse analíticamente y/o no se conocen.a priori.
Respuesta1
Aquí hay una propuesta que agrega ticks en un bucle. Calcula las coordenadas x de las intersecciones normalizándolas por la distancia de 1 en unidades de eje.
\documentclass[border=2mm,tikz]{standalone}
\usepackage{pgfplots}
\usetikzlibrary{calc,intersections}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}
\begin{axis}[width=\textwidth,
xmin=-0.1, xmax=10.5,
ymin=-1.9, ymax=1.9,
axis lines=middle,
x axis line style={name path=xaxis},
clip mode=individual]
\addplot[name path global=plot1,domain=0:10, samples=101]{sin(deg(x))};
\path [draw,name intersections={of={plot1 and xaxis},total=\t}]
let \p0=($(1,0)-(0,0)$) in
foreach \X in {1,...,\t}
{let \p1=($(intersection-\X)-(0,0)$) in
([yshift=2pt]intersection-\X) edge ([yshift=-2pt]intersection-\X)
node[above]{$\pgfmathparse{\x1/\x0}\pgfmathprintnumber\pgfmathresult$} };
\end{axis}
\end{tikzpicture}
\end{document}
Obviamente, si sabes algo sobre la función, puedes imprimir los ticks normalizándolos en pi.
\documentclass[border=2mm,tikz]{standalone}
\usepackage{pgfplots}
\usetikzlibrary{calc,intersections}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}
\begin{axis}[width=\textwidth,
xmin=-0.1, xmax=10.5,
ymin=-1.9, ymax=1.9,
axis lines=middle,
x axis line style={name path=xaxis},
clip mode=individual]
\addplot[name path global=plot1,domain=0:10, samples=101]{sin(deg(x))};
\path [draw,name intersections={of={plot1 and xaxis},total=\t}]
let \p0=($(1,0)-(0,0)$) in
foreach \X in {1,...,\t}
{let \p1=($(intersection-\X)-(0,0)$) in
([yshift=2pt]intersection-\X) edge ([yshift=-2pt]intersection-\X)
node[above]{$\pgfmathparse{\x1/\x0/pi}\ifdim\pgfmathresult pt<0.1pt
0
\else
\ifdim\pgfmathresult pt<1.1pt
\pi
\else
\pgfmathprintnumber\pgfmathresult\pi
\fi
\fi$} };
\end{axis}
\end{tikzpicture}
\end{document}