superponer - ¿Cambia el espacio de las marcas en el eje de una gráfica?
superponer graficas en r ggplot (4)
¿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
?
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()
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):
Use
par(xaxp = c(x1, x2, n))
oplot(..., xaxp = c(x1, x2, n))
para definir la posición (x1
yx2
) 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
)Puede suprimir por completo el dibujo del eje y agregar las marcas más adelante con
axis()
.
Para suprimir el dibujo del eje useplot(... , xaxt = "n")
.
A continuación, llame aaxis()
conside
,at
ylabels
:axis(side = 1, at = v1, labels = v2)
. Con elside
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), yv2
un vector que contiene las etiquetas para las marcas especificadas (debe ser de la misma longitud quev1
, 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 .
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 etiquetas de los ejes con:
plot(Time,Intensity,axes=F)
Luego reconstruyo los elementos de la trama 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 etiquetas:
plot(x, y, xaxt="n")
plot(x, y, yaxt="n")
axis(1 or 2, at=c(1, 5, 10), labels=c("First", "Second", "Third"))