Saltar al contenido

¿Cómo puedo hacer un código de tikzpicture para trazar el gráfico de $sin x$ como se muestra en la figura?

Esta es la contestación más correcta que encomtrarás compartir, sin embargo mírala pausadamente y analiza si se adapta a tu trabajo.

Solución:

Cuando quieres grados en el eje x, creo que también tiene sentido trazar usando grados. Entonces, en lugar de domain=0:2.5 y sin(deg(x))usar domain=0:360 y sin(x). Cuando hagas esto, debes eliminar axis equal image.

Habiendo hecho eso, solo necesita formatear las etiquetas. Mediante el uso xticklabel puede establecer el formato general para las etiquetas de verificación, por lo que para agregar un signo de grado puede agregar lo siguiente a las opciones del eje:

xticklabel=$pgfmathprintnumbertick^circ$

tick contiene el valor de x en los ticks, así que use pgfmathprintnumber para formatear el número y agregar un signo de grado con el normal ^circ. (Tenga en cuenta que esto es diferente de xticklabelscon un s al final, donde escribe una lista de las etiquetas que desea).

Necesitas cambiar el xtick ajuste que ya tiene, por supuesto, lo reemplacé con xtick distance=90 que te da un tic cada 90 grados. Si desea un tick más frecuente, debe aumentar el ancho de la trama.

Para obtener marcadores en puntos específicos, una forma es agregar un segundo gráfico adicional como este:

addplot[only marks,mark=*,samples at=0,90,...,360] sin(x);

Aquí los valores de x se expresan explícitamente con el samples at key. Un método alternativo es utilizar el mark repeat keyque le permite tener marcadores en cada enésimo punto de muestra:

addplot[
   domain=0:360,
   samples=181, % with domain=0:360 and 181 samples you get a sample every 2 degrees
   mark=*,
   mark repeat=45 % add a mark for every 45 sample, meaning you get a mark every 90 degreees
   ] sin(x) node[fill=white, right=2mm, pos=0.35]$y=sin(x)$;

Nota al margen irrelevante: al cargar pgfplotsno necesitas tikz y pgf además, serán cargados por pgfplots de todas formas.

ingrese la descripción de la imagen aquí

documentclass[10pt]article
usepackagepgfplots
pgfplotssetcompat=1.15
usepackagemathrsfs
usetikzlibraryarrows
pagestyleempty
begindocument
begincenter
begintikzpicture
beginaxis[
  width=2.5in,
  xmax=380,ymax=1.2,
  axis lines=middle,
  enlargelimits,
  axis line style=shorten >=-0.25cm,shorten <=-0.25cm,latex-latex,
  ticklabel style=fill=white,
  ytick=-1,-0.5,0,0.5,1,
  xlabel=$x$,
  ylabel=$y$,
  clip=false,
  xtick distance=90,
  xticklabel=$pgfmathprintnumbertick^circ$
]

addplot[
   domain=0:360,
   samples=181, % with domain=0:360 and 181 samples you get a sample every 2 degrees
   mark=*,
   mark repeat=45 % add a mark for every 45 sample, meaning you get a mark every 90 degreees
   ] sin(x) node[fill=white, right=2mm, pos=0.35]$y=sin(x)$;


% alternative method
%addplot[domain=0:360,mark=none,samples=100] sin(x) node[fill=white, right=2mm, pos=0.35]$y=sin(x)$;
%addplot[only marks,mark=*,samples at=0,90,...,360] sin(x);

endaxis
endtikzpicture
endcenter
enddocument

Compilar con Asíntota. asymptote.ualberta.ca

import graph;
size(10cm,5cm,false);

real sinx(real x)return sin(x);
path g=graph(sinx,0,2pi,350);
draw(g);

draw(Label("$x$",EndPoint,black),(-1,0)--(2*pi+0.5,0),blue,Arrow);
label(Label("$x'$",BeginPoint,black),(-1,0)--(2*pi+0.5,0));
draw(Label("$y$",EndPoint,black),(0,-1.5)--(0,1.5),darkgreen,Arrow);
label(Label("$y'$",BeginPoint,black),(0,-1.5)--(0,1.5));

real marginx=0.1, marginy=0.07;

for (int i: new int[]-1,1)
draw(scale(0.6)*Label("$"+(string) i+"$",Relative(0)),(0,i)-(marginx,0)--(0,i)+(marginx,0));

for (int i=0; i<=360; i=i+30) i == 360) ? blue : black);

label("$y=sin x$" +" on " + "$[0,2pi]$", (radians(130),-1.5));

ingrese la descripción de la imagen aquí

Similar a @Torbjørn T. respuesta (+1):

documentclass[margin=3mm]standalone
usepackagepgfplots
pgfplotssetcompat=1.15 % recent version is 1.17
usetikzlibraryarrows.meta

begindocument
    begintikzpicture
beginaxis[
    x=0.25mm,
    axis lines=middle,
    axis line style=Latex-Latex,
    xlabel=$x$, xlabel style=anchor=west,
    ylabel=$y$, ylabel style=anchor=south,
    %
    xmin=-25,   xmax=380,
    ymin=-1.25, ymax=1.25,
    ticklabel style = font=footnotesize,
    xtick distance=30,
    samples at=0,30,...,360,
    smooth
                ]
addplot +[very thick] sin(x);
node[above right] at (30,-1) $y=sin(x)$;
endaxis
    endtikzpicture
enddocument

ingrese la descripción de la imagen aquí

Te mostramos comentarios y calificaciones

Puedes añadir valor a nuestro contenido informacional participando con tu experiencia en las acotaciones.

¡Haz clic para puntuar esta entrada!
(Votos: 2 Promedio: 5)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *