Привета Я пытаюсь построить карту тепла в ggplot2, используя матрицу с 9 строк и 10 столбцовggplot2 ожидающего квадратной матрицы, даже если матрица не является симметричным
Я расплавить матрицу, используя «as.matrix» нотация в reshape2 и получить следующий вывод
А1 = расплава (as.matrix (а))
Var1 Var2 value
1 1 X0.05 8.690705e-01
2 2 X0.05 1.930320e-01
3 3 X0.05 1.474900e-02
4 4 X0.05 3.498176e-04
5 5 X0.05 2.451419e-06
6 6 X0.05 4.946808e-09
7 7 X0.05 2.832895e-12
8 8 X0.05 4.563140e-16
9 9 X0.05 2.055474e-20
10 1 X0.1 5.906241e-01
11 2 X0.1 7.416265e-01
12 3 X0.1 2.311771e-01
13 4 X0.1 3.892639e-02
14 5 X0.1 3.361408e-03
15 6 X0.1 1.445629e-04
16 7 X0.1 3.043528e-06
17 8 X0.1 3.103555e-08
18 9 X0.1 1.522292e-10
выход правильно с каждой колонке, представленной 9 значений
Я й ан отмасштабировать по значению и получите следующий результат
A2 = ddply (A1,. (var2), преобразование, Rescale = отмасштабировать (значение))
Var1 Var2 value rescale
1 1 X0.05 8.690705e-01 1.000000e+00
2 2 X0.05 1.930320e-01 2.221132e-01
3 3 X0.05 1.474900e-02 1.697101e-02
4 4 X0.05 3.498176e-04 4.025192e-04
5 5 X0.05 2.451419e-06 2.820737e-06
6 6 X0.05 4.946808e-09 5.692068e-09
7 7 X0.05 2.832895e-12 3.259684e-12
8 8 X0.05 4.563140e-16 5.250361e-16
9 9 X0.05 2.055474e-20 0.000000e+00
10 1 X0.1 5.906241e-01 7.963902e-01
11 2 X0.1 7.416265e-01 1.000000e+00
12 3 X0.1 2.311771e-01 3.117163e-01
13 4 X0.1 3.892639e-02 5.248786e-02
14 5 X0.1 3.361408e-03 4.532480e-03
15 6 X0.1 1.445629e-04 1.949266e-04
16 7 X0.1 3.043528e-06 4.103651e-06
17 8 X0.1 3.103555e-08 4.164269e-08
18 9 X0.1 1.522292e-10 0.000000e+00
Все по-прежнему выглядит хорошо, и когда я сюжет тепла карта вывод является правильным, до сих пор так хорошо
ggplot(A2, aes(Var2, Var1)) + geom_tile(aes(fill = rescale), colour = "white") + scale_fill_gradient(low = "light blue", high = "dark blue")
проблема возникает, когда я добавить собственные метки, где ось у проходит от 1 до 9 (на дисплей я е количество гетерозиготных особей) и ось й проходят от 0,05 до 0,5 (отображения незначительной частоты аллели)
x = [0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50]
y = [1 2 3 4 5 6 7 8 9]
ggplot(A4, aes(Var2, Var1)) + geom_tile(aes(fill = rescale), colour = "white") + scale_fill_gradient(low = "light blue", high = "dark blue") + scale_x_discrete(labels= x, expression("Minor allele frequency")) + scale_y_discrete(labels= y, expression("Number of Heterozygotes"))
Однако на этот раз оси у всех перепуталась
It мне кажется, что ggplot автоматически принимает матрицу 10X10 и пытается добавить отсутствующие метки. Я попытался найти вариант в reshape, где я мог бы, возможно, объявить форму матрицы, однако я не смог найти решение. Кто-нибудь сталкивался с этой проблемой. Любая помощь была бы очень признательна, заранее спасибо
спасибо, «as.factor» сделал трюк, я предполагаю, что, если не указано ggplot рассматривает все метки как непрерывное – iksaglam
@iksaglam Рад слышать, что это поможет. – jazzurro