0

我一直在试图弄清楚我是否可以从黑线 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)) 
4

1 回答 1

0

这是一种方法 - 您可以根据与 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)

在此处输入图像描述

于 2018-10-13T04:14:33.327 回答