Раскраска / упорядочение нескольких граней и меток в Heatmap (ggplot2) - PullRequest
0 голосов
/ 27 августа 2018

Для исследовательской работы по проблемам ядерных отходов я пытаюсь составить тепловую карту « Атрибуты » (в X) и « Модели » (в Y) с некоторыми дискретными значения даны (в Z, раскрашивание) для каждой (X, Y) пары. Я делаю все это для разных " Сценариев ".

Мой набор данных выглядит так:

head(tspa)
                 ï..Scenarios            Components
1 Total System (10,000 years) Unsaturated Zone Flow
2 Total System (10,000 years) Unsaturated Zone Flow
3 Total System (10,000 years) Unsaturated Zone Flow
4 Total System (10,000 years) Unsaturated Zone Flow
5 Total System (10,000 years) Unsaturated Zone Flow
6 Total System (10,000 years)       EBS Environment
                              Models WTYPE WCOMP WRAD WPROP WTREAT WFORM
1                 Site-Scale UZ Flow     0     0    0     0      0     0
2              Infiltration Analysis     0     0    0     0      0     0
3                   Climate Analysis     0     0    0     0      0     0
4                      Drift Seepage     0     0    0     0      0     0
5            Drift Wall Condensation     0     0    0     0      0     0
6 EBS Thermal-Hydrologic Environment     0     0    0     0      0     1
  WPACKAGE STRUCT OVERPACK ROCK GEOPHYS GEOCHEM HYDRO BIO SEISM VOLCA
1        0      0        0    1       0       0     1   0     0     0
2        0      0        0    1       0       0     1   0     0     0
3        0      0        0    0       0       0     0   0     0     0
4        0      1        0    1       0       0     1   0     0     0
5        0      1        0    0       0       0     1   0     0     0
6        1      1        0    0       1       0     1   0     0     0
  CLIMA HUMAN
1     0     0
2     0     0
3     1     0
4     0     0
5     0     0
6     0     0

Примечания к данным:

  • Полный набор данных можно найти здесь: tspa.csv
  • Метки заглавными буквами соответствуют атрибутам, остальные должно быть явным.
  • Символ "ï .." добавляется в первую ячейку "Сценарии", когда импорт базы данных csv в R (используя R Studio). Я понятия не имею откуда эта ошибка (кодировка моего CSV-файла?)? В идеале это должны быть просто «сценарии».

А вот мой «рабочий» скрипт на данный момент:

# Heatmap 2

# Load dependancies
library(tidyr)       # consistent data.frame cleaning
library(ggplot2)     # base plots are for Coursera professors
library(gridExtra)   # a helper for arranging individual ggplot objects
library(ggthemes)    # has a clean theme for ggplot2

# Read data and format for heatmap
tspa <- read.csv(file="tspa3.csv",header=TRUE,sep=",")
tspa.long <- gather(data = tspa, key = Attributes.name, value = Attributes.value, -c(1:3))

gg <- ggplot(data = tspa.long, mapping = aes(x = factor(Attributes.name, levels = unique(Attributes.name)),
                                                     y = factor(Models, levels = unique(Models)),
                                                   fill = Attributes.value), stat="identity")
gg <- gg + facet_wrap(~ ï..Scenarios , ncol=6)
gg <- gg + geom_tile(color="grey", size=0.1)
gg <- gg + coord_equal()
gg <- gg + scale_y_discrete(limits = rev(levels(tspa.long$Models)))
gg <- gg + labs(x=NULL, y=NULL, title=NULL)
gg <- gg + theme(plot.title=element_text(hjust=0))
gg <- gg + theme(axis.ticks=element_blank())
gg <- gg + theme(axis.text=element_text(size=7))
gg <- gg + theme(axis.text.x=element_text(angle=90))
gg <- gg + theme(legend.position = "none")
gg <- gg + scale_fill_gradient2(low="white", high=muted("red"), limits=range(tspa.long$Attributes.value))

gg

Этот сценарий генерирует следующую тепловую карту с огранкой только для сценария: Результат

enter image description here

Тем не менее, даже после тщательного поиска по теме и попытки различных подходов (ggplot2, перегрев, тепловая карта, карта pheatmap ...), я по-прежнему не могу построить именно то, что мне нужно.

Вот с чем я борюсь:

  1. Помимо огранки сценариев, как огранить (сгруппировать) атрибуты (X, по категориям) и модели (Y, по компонентам), которые все иерархически организованы? (ссылки на мои наборы данных) «Модели к компонентам», и у меня есть еще один файл данных, связывающий «Атрибуты с категориями») - На фасетировании я попытался this , this и that .
  2. Внутри каждого фасета (атрибуты, модели и сценарии), как сохранить порядок меток, как показано в моем файле данных , а не в алфавитном порядке? - На данный момент правильно упорядочены только атрибуты, но не модели и сценарии.
  3. Можно ли выделить или изменить цвет меток X и Y для заданного значения Z?

Поскольку я довольно плохо знаком с R и с визуализацией данных в целом, у меня все еще ограниченное понимание того, как именно работает R-код. Я подозреваю, что мне, возможно, придется использовать различные кадры данных или циклы IF / THEN, но я не знаю, как это сделать.

У меня все в порядке с общим руководством о том, какую архитектуру и функции использовать для моего набора данных и сценария, которые я смогу выяснить сам позже. Спасибо!

...