Tôi đang tìm cách kéo giãn độ dốc màu giữa hai giá trị và gắn nhãn chú giải, bất kể phạm vi giá trị dữ liệu trong tập dữ liệu. Về cơ bản, có một hàm tương đương với ylim()
cho các gradient màu không?ggplot thang tỷ lệ màu để nằm ngoài phạm vi dữ liệu
Được mã mà lô giá trị az thường giữa -1 và 1, tôi có thể vẽ và gắn nhãn một gradient nếu vỡ nằm trong phạm vi dữ liệu:
require(ggplot2)
#generator from http://docs.ggplot2.org/current/geom_tile.html
pp <- function (n,r=4) {
x <- seq(-r*pi, r*pi, len=n)
df <- expand.grid(x=x, y=x)
df$r <- sqrt(df$x^2 + df$y^2)
df$z <- cos(df$r^2)*exp(-df$r/6)
df
}
t <- pp(30)
summary(t)
b <- c(-.5,0,.5)
p <- ggplot(data=t,aes(x=x,y=y))+
geom_tile(aes(fill=z))+
scale_fill_gradientn(colours=c("navyblue","darkmagenta","darkorange1"),breaks=b,labels=format(b))
try(ggsave(plot=p,filename=<somefile.png>,height=3,width=4))
Nhưng khi tôi thay đổi phá vỡ các giá trị bên ngoài phạm vi quan sát được, màu tô chuyển tiếp dường như không điều chỉnh và các nhãn gradient không xuất hiện.
b <- c(-3,0,3)
Tôi nghĩ rằng tôi đang cố gắng để đạt được một cái gì đó tương tự, nhưng thất bại với giải pháp này. Tôi có một số bộ dữ liệu trong đó các giá trị nằm trong phạm vi giới hạn, nhưng về mặt lý thuyết chúng có thể nằm trong khoảng từ 0 đến -100 (dB). làm scale_fill_gradient (low = "white", high = "red") là tốt, nhưng không cho phép tôi so sánh trực quan các tập dữ liệu. scale_fill_gradient (low = "white", high = "red", limits = c (0, -100), guide = "legend", giới hạn = c (0, -100), break = b, labels = format (c (0, -100)) không tạo ra huyền thoại. – MartinT