personalizar - superponer graficas en r ggplot
Cómo especificar los valores reales del eje x para trazar como ticks del eje x en R (4)
Eche un vistazo más de cerca a la documentación del ?axis
Si miras la descripción del argumento de las labels
, verás que es:
"a logical value specifying whether (numerical) annotations are
to be made at the tickmarks,"
Entonces, simplemente cámbialo a verdadero, y obtendrás tus etiquetas de tic.
x <- seq(10,200,10)
y <- runif(x)
plot(x,y,xaxt=''n'')
axis(side = 1, at = x,labels = T)
# Since TRUE is the default for labels, you can just use axis(side=1,at=x)
Tenga cuidado de que si no estira el ancho de su ventana, entonces R no pueda escribir todas sus etiquetas. Juegue con el ancho de la ventana y verá a qué me refiero.
¡Es una lástima que haya tenido tantos problemas para encontrar documentación! ¿Cuáles fueron tus términos de búsqueda? Intente escribir r axis
en Google, y el primer enlace que obtendrá es esa página Quick R que mencioné anteriormente . Desplácese hacia abajo hasta "Ejes" y obtendrá una pequeña guía muy agradable sobre cómo hacerlo. Probablemente deberías comprobar primero si hay alguna pregunta de trazado, será más rápido que esperar una respuesta SO.
Estoy creando una trama en R y no me gustan los valores del eje x trazados por R.
Por ejemplo:
x <- seq(10,200,10)
y <- runif(x)
plot(x,y)
Esto traza un gráfico con los siguientes valores en el eje X:
50, 100, 150, 200
Sin embargo, quiero trazar los 20 valores 10,20, 30 ... 200
almacenados en la variable x, como los valores del eje X. Revisé innumerables blogs y el breve manual: después de horas de búsqueda, lo más cercano que he encontrado para encontrar algo útil son las siguientes (resumidas) instrucciones:
- call
plot()
opar()
, especificando el argumentoxaxt=''n''
-
axis()
llamadaaxis()
axis(side = 1, at = seq(0, 10, by = 0.1), labels = FALSE, tcl = -0.2)
egaxis(side = 1, at = seq(0, 10, by = 0.1), labels = FALSE, tcl = -0.2)
Lo intenté y la trama resultante no tenía ningún valor de eje x. ¿Es posible que alguien sepa cómo hacerlo? No puedo creer que nadie haya intentado hacer esto antes.
En el caso de trazar series de tiempo, el comando ts.plot
requiere un argumento diferente que xaxt="n"
require(graphics)
ts.plot(ldeaths, mdeaths, xlab="year", ylab="deaths", lty=c(1:2), gpars=list(xaxt="n"))
axis(1, at = seq(1974, 1980, by = 2))
Encontrará la respuesta a su pregunta en la página de ayuda para el ?axis
Aquí hay uno de los ejemplos de la página de ayuda, modificado con sus datos:
Opción 1: use xaxp
para definir las etiquetas de los ejes
plot(x,y, xaxt="n")
axis(1, xaxp=c(10, 200, 19), las=2)
Opción 2: Use at
y seq()
para definir las etiquetas:
plot(x,y, xaxt="n")
axis(1, at = seq(10, 200, by = 10), las=2)
Ambas opciones producen el mismo gráfico:
PD. Como tiene una gran cantidad de etiquetas, deberá usar argumentos adicionales para que el texto encaje en la trama. Yo uso las
para rotar las etiquetas.
Espero que esta codificación te ayude :)
plot(x,y,xaxt = ''n'')
axis(side=1,at=c(1,20,30,50),labels=c("1975","1980","1985","1990"))