【发布时间】:2019-09-10 16:56:57
【问题描述】:
我正在尝试在 R 中构建灵敏度热图,但在定义 x 轴和 y 轴的值时遇到了问题。
例如,我想构建一个热图,在 x 轴上显示变量 L,在 x 轴上显示变量 nA,在 y 轴上显示 nB。但是,我不知道如何定义 nA 和 nB 的 x 轴和 y 轴,因为这些变量取决于人口规模 A 和 B 也用于定义变量 @987654330 @ 和 nBH。使用我的代码,我在热图中获得了白线。这是我的代码:
## Define input parameters
dat <- expand.grid(V = 425,
A = round(seq(0, 4000, length.out = 100)),
B = round(seq(0, 3160, length.out = 100)),
C = 25,
fVA = 0.09,
fVB = 0.04,
gAV = 0.92,
gBV = 0.12,
gVA = 0.83,
gVB = 0.83,
oV = 3.274796e-08,
pV = 425,
qV = 195903.7,
kVp = 425,
kVm = 42,
dA = 0.01,
dB = 0.001,
kA = 4000,
kB = 3160,
rA = 0.01,
rB = 0.019)
## Add new parameters
dat$nVH <- dat[,c("V")]/(dat[,c("A")] + dat[,c("B")] + dat[,c("C")])
dat$nAH <- dat[,c("A")]/(dat[,c("A")] + dat[,c("B")] + dat[,c("C")])
dat$nBH <- dat[,c("B")]/(dat[,c("A")] + dat[,c("B")] + dat[,c("C")])
dat$nA <- dat[,c("A")]/dat[,c("kA")]
dat$nB <- dat[,c("B")]/dat[,c("kB")]
## Define the equation for L:
dat$L <- sqrt( (((dat$fVA)^2)*dat$gAV*dat$gVA*dat$nVH*dat$nAH)/((dat$oV*(dat$pV*dat$V + dat$kVp*dat$kVm + dat$qV))*(dat$dA + dat$rA*dat$nA)) +
(((dat$fVB)^2)*dat$gBV*dat$gVB*dat$nVH*dat$nBH)/((dat$oV*(dat$pV*dat$V + dat$kVp*dat$kVm + dat$qV))*(dat$dB + dat$rB*dat$nB)))
summary(dat)
## Build the sensitivity heat map
library(ggplot2)
ggplot(dat, aes(nA, nB, z = L)) +
geom_tile(aes(fill = L)) +
scale_fill_gradientn(colours = terrain.colors(10), name = "L") +
theme_bw() +
theme(axis.title.x = element_text(size = 16),
axis.text.x = element_text(size = 12),
axis.title.y = element_text(size = 16),
axis.text.y = element_text(size = 12),
legend.title = element_text(size = 16))
这是生成的热图
预期的结果将是没有白线的热图。
【问题讨论】: