Можно ли отклонить viridis от средней точки, в которой находится geom_contour (breaks = 1)? - PullRequest
0 голосов
/ 13 октября 2018

Я пытался выяснить, могу ли я отличить виридис от черной линии, 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)) 

1 Ответ

0 голосов
/ 13 октября 2018

Вот один подход - вы можете просто заполнить на основе расстояния от 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)

enter image description here

Или, если вы хотите сохранить заполнениеось как значение измерения шкалы, вы можете создать искусственную палитру, состоящую как из 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)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...