R ggplot geom_tile 或 geom_raster:插入并填充非矩形网格上的间隙

时间:2021-03-08 20:57:34

标签: r ggplot2 heatmap

我正在使用 geom_raster 和/或 geom_tile 创建多个图块/热图。数据排列为col(x)、row(y),z值是填充梯度。该模式中有很大的差距——一些是由于缺少数据,但主要是由于设计——数据表示二维圆形表面上一组测量值的行/列阵列。 (注意:这是一个子集。完整的数据集由 27 个图组成。)

我的问题是,我如何插值以填充这些地图中的这些间隙,使它们显示为连续的表面?

我的剧情代码:

library(ggplot2)
ggplot(ex, aes(col, row, fill = z)) + 
    geom_raster() +
    scale_fill_gradient2(low = "blue", high = "red",
    mid = "white", midpoint = 0, limits=c(-0.015, 0.015),
    labels = scales::percent) +
    scale_y_continuous(trans = "reverse") +
    facet_wrap(.~as.factor(order)) +
    theme_dark()

数据集:

ex <- structure(list(order = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
4L, 4L, 4L), row = c(1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 4L, 
4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 7L, 7L, 7L, 7L, 
7L, 8L, 8L, 8L, 8L, 8L, 9L, 9L, 9L, 9L, 10L, 10L, 10L, 10L, 11L, 
11L, 11L, 11L, 11L, 11L, 12L, 12L, 12L, 12L, 13L, 13L, 13L, 14L, 
14L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 
5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 7L, 7L, 7L, 7L, 7L, 8L, 8L, 8L, 
8L, 8L, 9L, 9L, 9L, 9L, 10L, 10L, 10L, 10L, 11L, 11L, 11L, 11L, 
11L, 11L, 12L, 12L, 12L, 12L, 13L, 13L, 13L, 14L, 14L, 1L, 1L, 
2L, 2L, 2L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 
6L, 6L, 6L, 6L, 7L, 7L, 7L, 7L, 7L, 8L, 8L, 8L, 8L, 8L, 9L, 9L, 
9L, 9L, 10L, 10L, 10L, 10L, 11L, 11L, 11L, 11L, 11L, 11L, 12L, 
12L, 12L, 12L, 13L, 13L, 13L, 14L, 14L, 1L, 1L, 2L, 2L, 2L, 3L, 
3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 
7L, 7L, 7L, 7L, 7L, 8L, 8L, 8L, 8L, 8L, 9L, 9L, 9L, 9L, 10L, 
10L, 10L, 10L, 11L, 11L, 11L, 11L, 11L, 11L, 12L, 12L, 12L, 12L, 
13L, 13L, 13L, 14L, 14L), col = c(6L, 9L, 5L, 8L, 11L, 4L, 7L, 
9L, 10L, 3L, 5L, 6L, 9L, 12L, 2L, 5L, 8L, 11L, 4L, 7L, 10L, 13L, 
3L, 6L, 9L, 11L, 12L, 2L, 4L, 5L, 8L, 11L, 4L, 7L, 10L, 13L, 
3L, 6L, 9L, 12L, 2L, 5L, 8L, 10L, 11L, 13L, 4L, 6L, 7L, 10L, 
6L, 9L, 11L, 5L, 8L, 6L, 9L, 5L, 8L, 11L, 4L, 7L, 9L, 10L, 3L, 
5L, 6L, 9L, 12L, 2L, 5L, 8L, 11L, 4L, 7L, 10L, 13L, 3L, 6L, 9L, 
11L, 12L, 2L, 4L, 5L, 8L, 11L, 4L, 7L, 10L, 13L, 3L, 6L, 9L, 
12L, 2L, 5L, 8L, 10L, 11L, 13L, 4L, 6L, 7L, 10L, 6L, 9L, 11L, 
5L, 8L, 6L, 9L, 5L, 8L, 11L, 4L, 7L, 9L, 10L, 3L, 5L, 6L, 9L, 
12L, 2L, 5L, 8L, 11L, 4L, 7L, 10L, 13L, 3L, 6L, 9L, 11L, 12L, 
2L, 4L, 5L, 8L, 11L, 4L, 7L, 10L, 13L, 3L, 6L, 9L, 12L, 2L, 5L, 
8L, 10L, 11L, 13L, 4L, 6L, 7L, 10L, 6L, 9L, 11L, 5L, 8L, 6L, 
9L, 5L, 8L, 11L, 4L, 7L, 9L, 10L, 3L, 5L, 6L, 9L, 12L, 2L, 5L, 
8L, 11L, 4L, 7L, 10L, 13L, 3L, 6L, 9L, 11L, 12L, 2L, 4L, 5L, 
8L, 11L, 4L, 7L, 10L, 13L, 3L, 6L, 9L, 12L, 2L, 5L, 8L, 10L, 
11L, 13L, 4L, 6L, 7L, 10L, 6L, 9L, 11L, 5L, 8L), z = c(-0.004858322, 
-0.003678845, -0.001656884, -0.001825381, 0.00070207, 0.00120756, 
0.000533573, 0.001039063, -0.002499368, -0.001319891, 0.00070207, 
0.003566514, 0.007947429, -0.000645904, 2.80828e-05, 0.000533573, 
0.004408998, 0.003735011, 0.01098037, 0.002050044, -0.001151394, 
0.00221854, -0.001825381, -0.000645904, 0.005251481, 0.011317364, 
-0.001488388, 0.00120756, 0.004072004, -0.000645904, -0.005026819, 
0.008789913, 0.006767952, -0.003510349, 0.001881547, 0.00070207, 
-0.000982898, -0.001656884, 0.001376057, -0.001656884, -0.002330871, 
0.001376057, -0.003341852, 0.002387037, NA, -0.00704878, 0.00171305, 
-0.001319891, -0.006374793, -0.004184335, 0.004914488, -0.003004858, 
0.001376057, -0.018001067, -0.012103682, -0.003928051, -0.005505112, 
-0.005347406, -0.004243463, -0.008659235, -0.001404753, 0.002537901, 
0.002537901, NA, -0.004085757, -0.002666402, -0.003454933, 0.001118545, 
-0.006293643, -0.002824108, 0.00458808, 0.003011019, 0.002064782, 
0.002064782, -0.000143104, 0.000330015, -0.004243463, 0.002222488, 
0.004272668, 0.003011019, 0.004430374, 0.000330015, 0.000172309, 
0.004114962, 0.005534317, 0.006322848, 0.004114962, 0.002380194, 
0.003957256, 0.001118545, -0.000616222, 0.003326431, 0.005376611, 
-0.002824108, 0.005376611, 1.46024e-05, 0.011054032, 0.001591664, 
-0.001089341, -0.000616222, -0.006609055, 0.002380194, 0.002222488, 
0.001907076, 0.000330015, 1.46024e-05, -0.004243463, -0.003612639, 
-0.014021244, -0.007397586, -0.007748634, -0.005559269, -0.004308204, 
-0.006184802, -0.010719915, NA, -0.000242241, 0.00319819, NA, 
-0.002587989, -0.003369905, -0.003682671, NA, -0.006341185, -0.001493306, 
0.003041806, NA, -0.00071139, -0.001806073, 0.001165208, 0.003667339, 
-0.003369905, 0.003823722, 0.00272904, 0.002885423, 0.001790741, 
-0.003369905, -0.001806073, -0.002744372, -0.001024157, 0.003667339, 
0.005387554, 0.003510956, 0.002572657, -0.00118054, -0.004933736, 
-0.001336923, 0.011017349, 0.000383292, 0.005231171, 0.000852442, 
0.001165208, 0.003041806, 0.001947124, -0.002431605, -0.006653952, 
0.00319819, 0.008046069, 0.008358835, 0.00663862, 0.003823722, 
-0.000398624, -0.002900755, -0.002275222, -0.001962456, -0.002808585, 
-0.008026171, 3.73711e-05, 0.000353588, -0.008974823, 0.004464414, 
0.003831979, 0.001144132, -0.000911281, 0.003990088, 0.003831979, 
0.003990088, -0.000278846, -0.01182078, 0.007626588, 0.00857524, 
0.006836044, -0.004863998, 0.007152262, 0.004148197, 0.001460349, 
-0.017512692, 0.008733348, 0.008259022, 0.00493874, -0.002492368, 
-0.01292754, 0.006677936, 0.006994153, 0.004464414, 0.005096849, 
-0.003915346, 0.011737413, 0.005571175, 0.001460349, -0.022888387, 
0.007942805, 0.009365783, -0.001701824, -0.008974823, 0.009207674, 
0.005571175, 0.003357653, -0.00581265, -0.007077519, -0.018619453, 
0.006836044, 0.002725219, 0.003357653, -0.004705889, 0.000353588, 
-0.002808585, -0.007709954, -0.007235628, -0.008026171)), class = "data.frame", row.names = c(NA, 
-220L))

结果图: enter image description here

0 个答案:

没有答案