Как я могу изменить масштабирование «строки» масштаба Heatmaply? - PullRequest
0 голосов
/ 15 января 2020

Я делаю тепловую карту с функцией heatmap и использую ggplot2 "scale_fill_gradient2", чтобы сделать расходящуюся цветовую шкалу, переходящую от низкого (красный) к высокому (зеленый).

Объект, который наносится на график это:

> mpf_s[-c(1,6,7),-which(colnames(mpf_s)=="GOV")]

              BANKS      NFC    HH           RoW
Deposits   847747.2      0.0     0      13.50861
Bonds    -1808582.0 -13411.0 -6725 -182595.83690
Loans      123761.2      0.0    50  -32254.37801
Equities   116713.5 274467.3     0    2310.84237

код такой:

heatmaply(mpf_s[-c(1,6,7),-which(colnames(mpf_s)=="GOV")],

          dendrogram = "none",

          scale_fill_gradient_fun = ggplot2::scale_fill_gradient2(low = "red",
                                                                  high = "green",
                                                                  mid="ghostwhite"
                                                                  ),

          xlab = "", ylab = "", 
          main = "",
          scale="row",

          grid_color = "white",
          grid_width = 0.000001,

          hide_colorbar = TRUE,
          branches_lwd = 0.01,
          fontsize_row = 5,
          fontsize_col = 7,
          labCol = names(mpf_s[-c(1,6,7),-which(colnames(mpf_s)=="GOV")]),
          labRow = rownames(mpf_s[-c(1,6,7),-which(colnames(mpf_s)=="GOV")]),
          heatmap_layers = theme(axis.line=element_blank())
)

и токовый выход такой: 1

Даже если я ' m масштабируется с аргументом scale="row", маленькие отрицательные значения окрашиваются в зеленый цвет, когда в строке присутствует значительно большее отрицательное число.

Мне нужны отрицательные значения, такие как красный, положительные, как зеленый, и нули как " ghostwhite ", поэтому я думаю, что мне нужен еще один процесс перемасштабирования .

Я попытался удалить аргумент масштабирования строки (scale =" row "), но затем в качестве средней точки отображаются небольшие значения "ghostwhite". Таким образом, проблема просто меняется местами, , так как мне нужно прочитать маленькие, но ненулевые значения, как положительные или отрицательные.

[Масштабированная карта тепла без строки] такова: 2

У кого-нибудь есть подсказка?

ps: "нормализация и процентирование не помогли. Я пытался использовать ограничения, но без особого успеха тоже.

...