ggplot2 Escala de cores mais afetada por discrepantes

Estou tendo dificuldades com alguns valores discrepantes que tornam a escala de cores inúti

Meus dados têm uma variável Comprimento que é baseada em um intervalo, mas geralmente terá alguns valores muito maiores. Os dados de exemplo abaixo têm 95 valores entre 500 e 1500 e 5 valores acima de 50.000. As legendas de cores resultantes tendem a usar 10k, 20k, ... 70k para as mudanças de cor quando quero ver mudanças de cor entre 500 e 1500. Realmente, qualquer coisa acima de 1300 deve ter a mesma cor sólida (provavelmente mediana +/- louca ), mas não sei onde definir isso.

Estou aberto a qualquer solução ggplot, mas, idealmente, os valores mais baixos seriam vermelho, branco médio e azul mais alto (baixo é ruim). No meu próprio conjunto de dados, date é uma data real com as.POSIXct () no ggplot aes (), mas parece não afetar o exempl

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

adição de trans = "log" ou "sqrt" também não funcion

Obrigado pela ajuda

questionAnswers(6)

yourAnswerToTheQuestion