热图(ggplot2)中的多个构面和标签着色/排序

时间:2018-08-27 19:56:52

标签: r ggplot2 label heatmap facet

对于一份有关核废料问题的研究论文,我试图通过以下方式制作一个“ 属性”(在X中)与“ 模型”(在Y中)的热图。为每个(X,Y)对指定一些离散值(以Z表示,着色)。我针对不同的“ 场景”进行了所有这些操作。

我的数据集如下:

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

此脚本仅按方案生成带有以下构面的以下热图:Result

enter image description here

但是,即使在广泛搜索该主题并尝试使用various approaches(ggplot2,过热,heatmaply,heatmap ...)之后,我仍然无法准确绘制所需的内容。

这就是我所苦恼的:

  1. 除了场景的构面之外,如何对所有按层次结构组织的属性(X,按类别)和模型(Y,按组件)进行构面(分组)?(我的数据集链接“组件的模型”,还有另一个链接“类别的属性”的数据文件。)–方面,我尝试了thisthisthat
  2. 在每个方面(属性,模型和方案)中,如何保持数据文件中显示的标签顺序而不是字母顺序? -目前,只有属性的顺序正确,模型和场景的顺序却不正确。
  3. 是否可以针对给定值Z突出显示或更改X和Y标签的颜色?

由于我是R语言的新手,并且通常来说是数据可视化的,所以我对R代码的工作原理仍然知之甚少。我怀疑我可能不得不使用各种数据帧或使用IF / THEN循环,但是我不知道该怎么做。

我对如何为数据集和脚本使用哪些体系结构和功能有一般性的指导意见是可以的,以后我可以自己弄清楚。谢谢!

0 个答案:

没有答案