Сортировка тепловой карты по значениям оси X

Я пробовал несколько способов отсортировать эту тепловую карту, которая у меня есть, но ничего не работает.

Я пытаюсь отсортировать тепловую карту по оси x (столбец Decile), но полученный порядок выглядит странно. Мой код выглядит следующим образом:

  ggplot(data = scz_results2, aes(x=reorder(Decile, sort(as.numeric(Decile))), y = Cell_Pair,fill = -log10(as.numeric(P_Value2)))) +
  geom_tile() +
  scale_fill_gradient(low = "White", high = "Red", name = "-log10(P-Value)")

Вот как выглядит сюжет:

Сортировка тепловой карты по значениям оси X

Я хочу отсортировать ось X от 0 до 10. Есть подсказки, как это сделать?

Данные, которые я использую для создания графика:

> str(scz_results2)
'data.frame':   33 obs. of  4 variables:
 $ Decile   : Factor w/ 11 levels "1","4","3","2",..: 1 2 3 4 5 6 7 8 9 10 ...
 $ Phenotype: chr  "Schizophrenia-(PGC3)" "Schizophrenia-(PGC3)" "Schizophrenia-(PGC3)" "Schizophrenia-(PGC3)" ...
 $ Cell_Pair: chr  "dSPNs_versus_iSPNs" "dSPNs_versus_iSPNs" "dSPNs_versus_iSPNs" "dSPNs_versus_iSPNs" ...
 $ P_Value2 : num  0.00026 0.00138 0.00482 0.00641 0.02998 ...



    > dput(scz_results2)
structure(list(Decile = structure(c(2L, 3L, 4L, 5L, 6L, 7L, 8L, 
9L, 10L, 11L, NA, 7L, 6L, 11L, 3L, 9L, 10L, 5L, 4L, 8L, 2L, NA, 
6L, 11L, 7L, 9L, 8L, 4L, 5L, 10L, 3L, 2L, NA), .Label = c("0", 
"1", "2", "3", "4", "5", "6", "7", "8", "9", "10"), class = "factor"), 
    Phenotype = c("Schizophrenia-(PGC3)", "Schizophrenia-(PGC3)", 
    "Schizophrenia-(PGC3)", "Schizophrenia-(PGC3)", "Schizophrenia-(PGC3)", 
    "Schizophrenia-(PGC3)", "Schizophrenia-(PGC3)", "Schizophrenia-(PGC3)", 
    "Schizophrenia-(PGC3)", "Schizophrenia-(PGC3)", "Schizophrenia-(PGC3)", 
    "Schizophrenia-(PGC3)", "Schizophrenia-(PGC3)", "Schizophrenia-(PGC3)", 
    "Schizophrenia-(PGC3)", "Schizophrenia-(PGC3)", "Schizophrenia-(PGC3)", 
    "Schizophrenia-(PGC3)", "Schizophrenia-(PGC3)", "Schizophrenia-(PGC3)", 
    "Schizophrenia-(PGC3)", "Schizophrenia-(PGC3)", "Schizophrenia-(PGC3)", 
    "Schizophrenia-(PGC3)", "Schizophrenia-(PGC3)", "Schizophrenia-(PGC3)", 
    "Schizophrenia-(PGC3)", "Schizophrenia-(PGC3)", "Schizophrenia-(PGC3)", 
    "Schizophrenia-(PGC3)", "Schizophrenia-(PGC3)", "Schizophrenia-(PGC3)", 
    "Schizophrenia-(PGC3)"), Cell_Pair = c("dSPNs_versus_iSPNs", 
    "dSPNs_versus_iSPNs", "dSPNs_versus_iSPNs", "dSPNs_versus_iSPNs", 
    "dSPNs_versus_iSPNs", "dSPNs_versus_iSPNs", "dSPNs_versus_iSPNs", 
    "dSPNs_versus_iSPNs", "dSPNs_versus_iSPNs", "dSPNs_versus_iSPNs", 
    "dSPNs_versus_iSPNs", "eSPNs_versus_dSPNs", "eSPNs_versus_dSPNs", 
    "eSPNs_versus_dSPNs", "eSPNs_versus_dSPNs", "eSPNs_versus_dSPNs", 
    "eSPNs_versus_dSPNs", "eSPNs_versus_dSPNs", "eSPNs_versus_dSPNs", 
    "eSPNs_versus_dSPNs", "eSPNs_versus_dSPNs", "eSPNs_versus_dSPNs", 
    "eSPNs_versus_iSPNs", "eSPNs_versus_iSPNs", "eSPNs_versus_iSPNs", 
    "eSPNs_versus_iSPNs", "eSPNs_versus_iSPNs", "eSPNs_versus_iSPNs", 
    "eSPNs_versus_iSPNs", "eSPNs_versus_iSPNs", "eSPNs_versus_iSPNs", 
    "eSPNs_versus_iSPNs", "eSPNs_versus_iSPNs"), P_Value2 = c(0.000260199792609, 
    0.00138384156034, 0.00482250739633, 0.00640537675613, 0.0299780806176, 
    1, 1, 1, 1, 1, 1, 0.000191433497246, 0.00489292968901, 0.00754983630389, 
    0.026531288903, 0.0332365664972, 0.0481595900232, 1, 1, 1, 
    1, 1, 0.0030395402852, 0.00629441034153, 0.0100384998497, 
    0.0196763275176, 0.0225151330175, 1, 1, 1, 1, 1, 1)), .Names = c("Decile", 
"Phenotype", "Cell_Pair", "P_Value2"), row.names = c(208L, 209L, 
210L, 211L, 212L, 213L, 214L, 215L, 216L, 217L, 218L, 395L, 396L, 
397L, 398L, 399L, 400L, 401L, 402L, 403L, 404L, 405L, 548L, 549L, 
550L, 551L, 552L, 553L, 554L, 555L, 556L, 557L, 558L), class = "data.frame")

ОБНОВИТЬ:

Некоторые пользователи предложили мне использовать as.numeric(scz_results2$Decile), чтобы исправить этот результат. Однако график, который я получаю, причудлив, а именно, 6-й дециль в средней части внезапно меняется (он краснее, чем 10-й дециль, хотя значение p не такое низкое). Смотри ниже:

Сортировка тепловой карты по значениям оси X

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
652
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
txt <- "    Decile            Phenotype          Cell_Pair     P_Value
208      1 Schizophrenia-(PGC3) dSPNs_versus_iSPNs 0.0002601998
209      4 Schizophrenia-(PGC3) dSPNs_versus_iSPNs 0.0013838416
210      3 Schizophrenia-(PGC3) dSPNs_versus_iSPNs 0.0048225074
211      2 Schizophrenia-(PGC3) dSPNs_versus_iSPNs 0.0064053768
212      9 Schizophrenia-(PGC3) dSPNs_versus_iSPNs 0.0299780806
213     10 Schizophrenia-(PGC3) dSPNs_versus_iSPNs 1.0000000000
214      5 Schizophrenia-(PGC3) dSPNs_versus_iSPNs 1.0000000000
215      7 Schizophrenia-(PGC3) dSPNs_versus_iSPNs 1.0000000000
216      8 Schizophrenia-(PGC3) dSPNs_versus_iSPNs 1.0000000000
217      6 Schizophrenia-(PGC3) dSPNs_versus_iSPNs 1.0000000000
218      0 Schizophrenia-(PGC3) dSPNs_versus_iSPNs 1.0000000000
395     10 Schizophrenia-(PGC3) eSPNs_versus_dSPNs 0.0001914335
396      9 Schizophrenia-(PGC3) eSPNs_versus_dSPNs 0.0048929297
397      6 Schizophrenia-(PGC3) eSPNs_versus_dSPNs 0.0075498363
398      4 Schizophrenia-(PGC3) eSPNs_versus_dSPNs 0.0265312889
399      7 Schizophrenia-(PGC3) eSPNs_versus_dSPNs 0.0332365665
400      8 Schizophrenia-(PGC3) eSPNs_versus_dSPNs 0.0481595900
401      2 Schizophrenia-(PGC3) eSPNs_versus_dSPNs 1.0000000000
402      3 Schizophrenia-(PGC3) eSPNs_versus_dSPNs 1.0000000000
403      5 Schizophrenia-(PGC3) eSPNs_versus_dSPNs 1.0000000000
404      1 Schizophrenia-(PGC3) eSPNs_versus_dSPNs 1.0000000000
405      0 Schizophrenia-(PGC3) eSPNs_versus_dSPNs 1.0000000000
548      9 Schizophrenia-(PGC3) eSPNs_versus_iSPNs 0.0030395403
549      6 Schizophrenia-(PGC3) eSPNs_versus_iSPNs 0.0062944103
550     10 Schizophrenia-(PGC3) eSPNs_versus_iSPNs 0.0100384998
551      7 Schizophrenia-(PGC3) eSPNs_versus_iSPNs 0.0196763275
552      5 Schizophrenia-(PGC3) eSPNs_versus_iSPNs 0.0225151330
553      3 Schizophrenia-(PGC3) eSPNs_versus_iSPNs 1.0000000000
554      2 Schizophrenia-(PGC3) eSPNs_versus_iSPNs 1.0000000000
555      8 Schizophrenia-(PGC3) eSPNs_versus_iSPNs 1.0000000000
556      4 Schizophrenia-(PGC3) eSPNs_versus_iSPNs 1.0000000000
557      1 Schizophrenia-(PGC3) eSPNs_versus_iSPNs 1.0000000000
558      0 Schizophrenia-(PGC3) eSPNs_versus_iSPNs 1.0000000000
"
scz_results2 <- read.table(textConnection(txt), header = TRUE)
scz_results2$Decile <- factor(scz_results2$Decile, levels = 0:10, labels = 0:10)

plt <- ggplot(data = scz_results2, aes(
    x = Decile, 
    y = Cell_Pair,
    fill = -log10(as.numeric(P_Value)))) +
  geom_tile() +
  scale_fill_gradient(low = "White", high = "Red", name = "-log10(P-Value)")
plot(plt)

Я получаю сообщение «Ошибка: дискретное значение передается в непрерывную шкалу». Чего-то не хватает в этом коде?

Workhorse 08.04.2019 18:27

ваш столбец Decile настроен на коэффициент, поэтому вам нужно изменить x=Decile на x=as.numeric(Decile)

GordonShumway 08.04.2019 18:30

В настоящее время ваша переменная Decile является фактором, попробуйте scz_results2$Decile <- as.numeric(scz_results2$Decile) перед сюжетом.

TheRimalaya 08.04.2019 18:31
as.numeric(scz_results2$Decile) дает мне неправильный ответ. Я разместил сюжет в разделе ОБНОВЛЕНИЕ моего вопроса.
Workhorse 08.04.2019 18:33

Проблема в том, что изменение децилей на числовые ИЗМЕНЯЕТ их значения. Например, дециль 10 становится децилем 6. Запуск вашего кода не дает вашей цифры.

Workhorse 08.04.2019 18:38

можно вместо таблицы добавить результат из dput(scz_results2)? Чтобы я мог воспроизвести вашу проблему.

TheRimalaya 08.04.2019 18:41

Другие вопросы по теме