我一直在尝试弄清楚是否可以将viridis与黑线geom_contour(breaks = 5E-14)分开。在本质上,黑线是中点,而viridis调色板会在那里发散。这个是可能的吗?
谢谢!
Design.matrix <- expand.grid(
A=seq(0.1E-9, 2E-9, by=0.05E-9),
B=seq(1E-6, 100.E-6, by=2.5E-6))
Design.matrix$C <-Design.matrix$A * Design.matrix$B
Design.matrix$D <-(Design.matrix$A * Design.matrix$B) * Design.matrix$B
Design.matrix$Ratio <- Design.matrix$C/Design.matrix$D
library(ggplot2)
library(viridis)
(test <- ggplot(Design.matrix, aes(x = A, y = B, z = C, fill = C)) +
theme(legend.title=element_blank()) +
geom_raster(interpolate = T) +
scale_fill_gradientn(colours = rev(viridis(8))) +
geom_contour(breaks = 5E-14, colour="black", size=1)) 发布于 2018-10-13 12:14:33
这里有一种方法--你可以根据与C语言的距离来填充:
ggplot(Design.matrix, aes(x = A, y = B, z = C, fill = abs(C-5E-14))) +
theme(legend.title=element_blank()) +
geom_raster(interpolate = T) +
scale_fill_gradientn(colours = rev(viridis(8))) +
geom_contour(breaks = 5E-14, colour="black", size=1)

或者,如果你想保持填充轴作为比例测量值,你可以构造一个由viridis和它的反面组成的人工调色板。我使用了不同数量的颜色来近似,以便发散点与黑线相对应。
ggplot(Design.matrix, aes(x = A, y = B, z = C, fill = C)) +
theme(legend.title=element_blank()) +
geom_raster(interpolate = T) +
scale_fill_gradientn(colours = c(viridis(3),rev(viridis(8)))) +
geom_contour(breaks = 5E-14, colour="black", size=1)

https://stackoverflow.com/questions/52788218
复制相似问题