R: ggplot - использовать geom_raster с facet_wrap - PullRequest
0 голосов
/ 20 апреля 2019

Рассмотрим эти 3 переменные: A [100 * 1], B [100 * 1] и M [100 * 1]. Переменная M имеет 7 классов. Для каждого класса я хотел бы построить raster вроде:

ggplot(data = test, aes(x = factor(A), y = factor(B), fill = M)) +
       xlab("A") + ylab("B") +
       geom_raster()

Итак, для каждого класса я могу сделать это правильно:

enter image description here

На втором шаге я бы хотел построить все 7 классов как 7 подзаговоров в одном столбце, используя функцию facet_wrap. Итак, я сгенерировал data.frame, где I rbind A, B и M каждого класса. Я добавил столбец к data.frame как ID каждого класса. фрейм данных df выглядит следующим образом (я удалил промежуточные строки каждого класса, чтобы фрейм данных был коротким):

row A   B   M   ID
1   50  5   0.272727272727273   1
2   50  10  0.352941176470588   1
97  2000    200 0.75    1
98  2000    300 0.692307692307692   1
99  2000    500 0.692307692307692   1
100 2000    1000    0.444444444444444   1
1   50  5   0.199117609627896   2
2   50  10  0.176712023248457   2
98  2000    300 0.059602649006623   2
99  2000    500 0.101954497349775   2
100 2000    1000    0.12773219045144    2
1   50  5   0.864866760389603   3
2   50  10  0.88297043479882    3
3   50  20  0.904572710950147   3
98  2000    300 0.96047443246472    3
99  2000    500 0.96047443246472    3
100 2000    1000    0.925079933067989   3
1   50  5   1   4
2   50  10  1   4
96  2000    150 1   4
97  2000    200 1   4
98  2000    300 1   4
99  2000    500 1   4
100 2000    1000    1   4
1   50  5   0.907284768211923   5
2   50  10  0.921192052980132   5
3   50  20  0.942384105960265   5
98  2000    300 0.987417218543044   5
99  2000    500 0.974172185430469   5
100 2000    1000    0.951655629139076   5
1   50  5   6.875   6
2   50  10  6.75    6
3   50  20  6.5 6
97  2000    200 0   6
98  2000    300 -0.625  6
99  2000    500 -6.375  6
100 2000    1000    -7  6
1   50  5   -489.141    7
2   50  10  -446.8695   7
3   50  20  -335.402    7
4   50  50  -208.469    7
96  2000    150 3.492   7
97  2000    200 7.056   7
98  2000    300 11.177  7
99  2000    500 12.827  7
100 2000    1000    14.487  7

Чтобы построить 7 растров, я использовал это:

ggplot(data = df, aes(x = factor(A), y = factor(B), fill = M)) +
          xlab("A") + ylab("B") +
          geom_raster() + 
          facet_wrap(~ID, ncol = 1)

На что это похоже, выглядит так:

enter image description here

это не правильно. Кажется, он рассматривает все 7 facets как один ratser. Я не мог найти проблему. Буду признателен за вашу помощь.

...