【问题标题】:Building sensitivity heat maps in R在 R 中构建灵敏度热图
【发布时间】:2019-09-10 16:56:57
【问题描述】:

我正在尝试在 R 中构建灵敏度热图,但在定义 x 轴和 y 轴的值时遇到了问题。

例如,我想构建一个热图,在 x 轴上显示变量 L,在 x 轴上显示变量 nA,在 y 轴上显示 nB。但是,我不知道如何定义 nAnB 的 x 轴和 y 轴,因为这些变量取决于人口规模 AB 也用于定义变量 @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))

这是生成的热图

预期的结果将是没有白线的热图。

【问题讨论】:

    标签: r heatmap


    【解决方案1】:

    您也可以通过将color 映射到L,然后将color 渐变比例与fill 渐变匹配来解决此问题:

    ggplot(dat, aes(nA, nB, fill = L, color = L)) +
      geom_tile() +
      scale_fill_gradientn(colours = terrain.colors(10), name = "L") + 
      scale_color_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))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多