我遇到了一些異常情況,使色標無用。ggplot2色差過大受異常值影響
我的數據有一個長度變量,它基於一個範圍,但通常會有一些更大的值。以下示例數據具有500到1500之間的95個值,以及50,000以上的5個值。當我想看到500到1500之間的顏色變化時,結果顏色圖例傾向於使用10k,20k,... 70k作爲顏色變化。實際上,大約1300以上的任何應該是相同的純色(可能是中值+/-瘋狂),但我不知道在哪裏定義。
我打開任何ggplot解決方案,但理想情況下較低的值將是紅色,中間白色和更高的藍色(低是壞)。在我自己的數據集中,日期是ggplot aes()中as.POSIXct()的實際日期,但似乎不影響該示例。
#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))
添加trans =「log」或「sqrt」也不完全有效。
謝謝你的幫助! ?
我的解決方法是使用日誌比例(或類似的東西)着色,當我有異常值時。但是,我很想知道是否有更好的方法! – Justin 2012-03-21 20:05:19
是的,我曾嘗試過,但這個例子仍然沒有。希望有更好的方法出現! – ARobertson 2012-03-21 20:14:52
你可以使用?cut來創建另一個變量到你的優先休息區,然後將'color ='美學設置爲該變量。 – 2012-03-21 20:36:10