varias tutorial sheet los graficas ggplot examples español escala ejes como cheat cambiar r ggplot2

tutorial - ggplot: ¿Cómo establecer el color predeterminado para todos los geoms?



manual ggplot2 (2)

Para reemplazar una estética predeterminada de geom con otra (para todos los geom que usen esa estética), puede probar el siguiente código.

Primero defina una función para obtener la configuración aes predeterminada de todos los geoms desde ggplot2

library(ggplot2) library(purrr) geom_aes_defaults <- function() { geom_names <- apropos("^Geom", ignore.case = FALSE) geoms <- mget(geom_names, env = asNamespace("ggplot2")) map(geoms, ~ .$default_aes) }

Con geom_aes_defaults() obtiene una larga lista de todas las asignaciones estéticas de geom

$Geom Aesthetic mapping: <empty> $GeomAbline Aesthetic mapping: * `colour` -> "black" * `size` -> 0.5 * `linetype` -> 1 * `alpha` -> NA $GeomAnnotationMap Aesthetic mapping: * `colour` -> "NA" * `fill` -> "grey20" * `size` -> 0.5 * `linetype` -> 1 * `alpha` -> NA $GeomArea Aesthetic mapping: * `colour` -> NA * `fill` -> "grey20" * `size` -> 0.5 * `linetype` -> 1 * `alpha` -> NA ...

La siguiente función recorre todos los geoms que coinciden con una estética determinada y sustituye los valores correspondientes

replace_geom_aes_defaults <- function(name, old_aes, new_aes) { matching_geoms <- map(geom_aes_defaults(), name) %>% compact() %>% keep(~ . == old_aes) geoms <- gsub("^Geom(.*)", "//1", names(matching_geoms)) walk(geoms, update_geom_defaults, setNames(list(new_aes), name)) }

Ahora puede reemplazar los colores sistemáticamente, por ejemplo, convertir el negro en rojo por

replace_geom_aes_defaults("colour", "black", "red")

o incluso reemplazar colores de relleno (para gráficos de barras) por

replace_geom_aes_defaults("fill", "grey35", "red")

Estoy intentando establecer el color predeterminado para todos los geoms en un ggplot a algo que no sea negro. Tenga en cuenta que esto no se trata de establecer scale_color ...

Ejemplo simple:

# linear model with confidence bands... set.seed(1) df <- data.frame(x=1:50, y=5 + 2*(1:50)+rnorm(50,sd=10)) lm <- lm(y~x,df) se <- summary(lm)$sigma # standard error of fit Z <- qnorm(0.05/2,lower.tail=F) # 95% confidence bands df <- cbind(df,predict(lm,se.fit=T)[c("fit","se.fit")]) # plot the result... library(ggplot2) ggplot(df, aes(x=x)) + geom_point(aes(y=y), size=3) + geom_line(aes(y=fit)) + geom_line(aes(y=fit+Z*se.fit), linetype=2)+ geom_line(aes(y=fit-Z*se.fit), linetype=2)

Ahora, supongamos que quiero hacer todo rojo. Dejando de lado la conveniencia de hacer eso, creo que ggplot(df, aes(x=x), colour="red") lo haría. Pero el parámetro colour= parece ser ignorado: todo sigue siendo negro. Puedo agregar colour="red" a cada llamada geom_ , pero estoy tratando de evitar eso.

Edición: el uso de ggplot(df, aes(x=x, color="red")) no es una opción porque crea una escala de color con la paleta de ggplot predeterminada ( espaciada uniformemente alrededor de un círculo de color HSL ). Con un color, este es #F8766D , que es rojo claro. Además, esto crea una leyenda que luego se debe ocultar.


Puede establecer un color predeterminado para cada tipo de geometría de esta manera:

update_geom_defaults("point", list(colour = "red")) update_geom_defaults("line", list(colour = "red")) ggplot(df, aes(x=x)) + geom_point(aes(y=y), size=3) + geom_line(aes(y=fit)) + geom_line(aes(y=fit+Z*se.fit), linetype=2)+ geom_line(aes(y=fit-Z*se.fit), linetype=2)

Editar Si quiere hacer todo, entonces use (Editar préstamo desde here ):

params <- ls(pattern = ''^geom_'', env = as.environment(''package:ggplot2'')) geoms <- gsub("geom_", "", params) lapply(geoms, update_geom_defaults, list(colour = "red")) lapply(geoms, update_geom_defaults, list(fill = "red", colour = "red")) ## include fills

Si desea establecer el color predeterminado para el único gráfico, simplemente haga lo siguiente:

ggplot(df, aes(x=x, colour="red")) + geom_point(aes(y=y), size=3) + geom_line(aes(y=fit)) + geom_line(aes(y=fit+Z*se.fit), linetype=2)+ geom_line(aes(y=fit-Z*se.fit), linetype=2)