Tôi đang gặp khó khăn với một vài ngoại lệ làm cho quy mô màu vô dụng.ggplot2 Quy mô màu bị ảnh hưởng bởi các ngoại lệ
Dữ liệu của tôi có biến Độ dài dựa trên một phạm vi, nhưng thường sẽ có một vài giá trị lớn hơn nhiều. Dữ liệu ví dụ bên dưới có 95 giá trị từ 500 đến 1500 và 5 giá trị trên 50.000. Các huyền thoại màu kết quả có xu hướng sử dụng 10k, 20k, ... 70k cho các thay đổi màu sắc khi tôi muốn xem thay đổi màu sắc giữa 500 và 1500. Thật vậy, bất cứ điều gì trên khoảng 1300 nên cùng một màu rắn (có thể là trung bình +/- điên), nhưng tôi không biết xác định đâu.
Tôi đang mở cho bất kỳ giải pháp ggplot nào, nhưng giá trị thấp hơn lý tưởng sẽ là màu đỏ, trắng trung bình và cao hơn màu xanh (thấp là xấu). Trong tập dữ liệu của riêng tôi, ngày tháng là ngày thực tế với as.POSIXct() trong ggplot aes(), nhưng dường như không ảnh hưởng đến ví dụ.
#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))
Thêm trans = "log" hoặc "sqrt" không hoàn toàn thực hiện thủ thuật.
Cảm ơn sự giúp đỡ của bạn! ?
workaround của tôi đã được sử dụng một quy mô đăng nhập (hoặc một cái gì đó như nó) để tô màu khi tôi có ngoại lệ. Tuy nhiên, tôi rất muốn biết nếu có một cách tốt hơn! – Justin
Vâng, tôi đã thử điều đó, nhưng nó vẫn còn cho ví dụ này. Hy vọng rằng một cách tốt hơn đi lên! – ARobertson
Bạn có thể sử dụng? Cắt, để tạo một biến khác cho các lần ngắt trước của bạn và sau đó đặt 'color =' aesthetic thành biến đó. –