¿Cambia el espacio de las marcas en el eje de una gráfica?

¿Cómo puedo cambiar el espacio de las marcas en el eje de un gráfico?

¿Qué parámetros debo usar con base plot o con rgl ?

Hay al menos dos formas de lograr esto en el gráfico base (mis ejemplos son para el eje x, pero funcionan igual para el eje y):

  1. Use par(xaxp = c(x1, x2, n)) o plot(..., xaxp = c(x1, x2, n)) para definir la posición ( x1 y x2 ) de las marcas de graduación extremas y el número de intervalos entre las marcas de graduación ( n ). En consecuencia, n+1 es el número de marcas dibujadas. (Esto funciona solo si no usa una escala logarítmica, para el comportamiento con escalas logarítmicas vea ?par )

  2. Puede suprimir por completo el dibujo del eje y agregar las marcas más adelante con axis() .
    Para suprimir el dibujo del eje use plot(... , xaxt = "n") .
    A continuación, llame a axis() con side , at y labels : axis(side = 1, at = v1, labels = v2) . Con el side referencia al lado del eje (1 = eje x, 2 = eje y), v1 es un vector que contiene la posición de los tics (p. Ej., c(1, 3, 5) si su eje varía desde 0 a 6 y desea tres marcas), y v2 un vector que contiene las tags para las marcas especificadas (debe ser de la misma longitud que v1 , por ejemplo, c("group a", "group b", "group c") ) . Ver ?axis y mi respuesta actualizada a una publicación en stats.stackexchange para ver un ejemplo de este método .

Con gráficos base, la forma más fácil es detener las funciones de trazado de los ejes de dibujo y luego dibujarlas usted mismo.

 plot(1:10, 1:10, axes = FALSE) axis(side = 1, at = c(1,5,10)) axis(side = 2, at = c(1,3,7,10)) box() 

Tengo un conjunto de datos con el tiempo como el eje x, y la intensidad como el eje y. Primero necesitaría eliminar todos los ejes predeterminados excepto las tags de los ejes con:

 plot(Time,Intensity,axes=F) 

Luego reconstruyo los elementos de la ttwig con:

 box() # create a wrap around the points plotted axis(labels=NA,side=1,tck=-0.015,at=c(seq(from=0,to=1000,by=100))) # labels = NA prevents the creation of the numbers and tick marks, tck is how long the tick mark is. axis(labels=NA,side=2,tck=-0.015) axis(lwd=0,side=1,line=-0.4,at=c(seq(from=0,to=1000,by=100))) # lwd option sets the tick mark to 0 length because tck already takes care of the mark axis(lwd=0,line=-0.4,side=2,las=1) # las changes the direction of the number labels to horizontal instead of vertical. 

Entonces, at = c(...) especifica la colección de posiciones para poner las marcas. Aquí me gustaría poner las marcas en 0, 100, 200, …, 1000. seq(from =...,to =...,by =...) me da la opción de límites y el incrementos

Y si no desea que R agregue decimales o ceros, puede evitar que dibuje el eje x o el eje y, o ambos, usando … axt. Luego, puede agregar sus propios tics y tags:

 plot(x, y, xaxt="n") plot(x, y, yaxt="n") axis(1 or 2, at=c(1, 5, 10), labels=c("First", "Second", "Third")) 

Acabo de descubrir el paquete Hmisc.

 library(Hmisc) plot(...) minor.tick(nx=10, ny=10) # make minor tick marks (without labels) every 10th