varias superponer studio los leyendas grafico graficas ggplot escala ejes como cambiar barras r plot

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):

  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 etiquetas 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 .


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"))