Tengo problemas con algunos valores atípicos que hacen que la escala de colores sea inútil.ggplot2 Escala de color más afectada por valores atípicos
Mis datos tienen una variable de longitud que se basa en un rango, pero generalmente tendrá algunos valores mucho más grandes. Los siguientes datos de ejemplo tienen 95 valores entre 500 y 1500, y 5 valores superiores a 50,000. Las leyendas de colores resultantes tienden a usar 10k, 20k, ... 70k para los cambios de color cuando quiero ver cambios de color entre 500 y 1500. En realidad, cualquier cosa de alrededor de 1300 debe ser del mismo color sólido (probablemente mediana +/- enojada)), pero no sé dónde definir eso.
Estoy abierto a cualquier solución ggplot, pero idealmente los valores más bajos serían rojo, blanco medio y azul más alto (bajo es malo). En mi propio conjunto de datos, la fecha es una fecha real con as.POSIXct() en ggplot aes(), pero no parece afectar el ejemplo.
#example data
date <- sample(x=1:10,size=100,replace=T)
stateabbr <- sample(x=1:50,size=100,replace=T)
Length <- c(sample(x=500:1500,size=95,replace=T),60000,55000,70000,50000,65000)
x <- data.frame(date=date,stateabbr=stateabbr,Length=Length)
#main plot
(g <- ggplot(data=x,aes(x=date,y=factor(stateabbr))) +
geom_point(aes(color=as.numeric(as.character(Length))),alpha=3/4,size=4) +
#scale_x_datetime(labels=date_format("%m/%d")) +
opts(title="Date and State") + xlab("Date") + ylab("State"))
#problem
g + scale_color_gradient2("Length",midpoint=median(x$Length))
Adición de trans = "log" o "sqrt" no acaba de hacer el truco tampoco.
¡Gracias por tu ayuda! ?
mi solución ha sido utilizar una escala de registro (o algo así) para colorear cuando tengo valores atípicos. Sin embargo, me encantaría saber si hay una mejor manera. – Justin
Sí, lo había intentado, pero todavía está apagado para este ejemplo. ¡Ojalá surja una mejor manera! – ARobertson
Puedes usar? Cut, para crear otra variable para tus breaks preferidos y luego establecer la estética 'color =' en esa variable. –