R语言生成热图
- 1. R语言生成热图
- 2. 补充:长数据格式转换方法
- 3. 参考
1. R语言生成热图
今天解决了一个困扰了我很久的问题,就是如何绘制不添加相关性的热图。一般绘制热图是使用corrplot包画相关性图,但是这样有一个前提,就是输入的数据集必须进行相关性分析。那么如果我不需要进行相关性分析,而是直接绘制能够反应数值大小的热图呢?
这里给出一个相关性热图的绘制方法:corrplot相关性图,我之前是参考这个来画的,所以就一直出错,但是如果你要绘制相关性热图的话,可以参考他的方法。
在这里,我使用了气泡图进行绘制,我的数据集如下:
但是使用这样的数据集是无法绘制气泡图的,因为气泡图要求数据有三列,因此需要将原始数据转换为长格式的数据(可以使用melt函数,但是我不太会使用这个函数,如果您会,可以告诉我如何操作【已解决,文末】),所以我就直接手动将数据调整为长格式:
接下来就是绘制气泡图:
library(ggplot2)
A <- read_excel("jiaohu_result.xlsx", sheet = 7)
data <- as.data.frame(A)
## 调整因子水平
data$X <- factor(data$X, levels = c("X1", "X2", "X3", "X4", "X5", "X6",
"X7","X8"))
data$Y <- factor(data$Y, levels = c("X1", "X2", "X3", "X4", "X5", "X6",
"X7","X8"))
data
# 创建气泡图
ggplot(data, aes(x = X, y = Y, size = values, color= X, fill=X))+
geom_point(color="black", shape=21,alpha=0.9, stroke = 0.7)+
scale_size_continuous(range = c(1, 16)) +
theme_minimal() +
labs(x = "Variable", y = "Variable", size = "q") +
theme_bw()+
theme(text=element_text(size=20, family="serif"),
axis.text.x = element_text(family = "serif", size = 14, face = "bold"),
axis.text.y = element_text(family = "serif", size = 14, face = "bold"),
panel.grid = element_blank()
)
结果展示:
这里放一张别人论文里面的气泡图:
2. 补充:长数据格式转换方法
经过网上查询,我大概了解了长数据格式的转换方法 : melt函数使用方法
library(openxlsx)
library(readxl)
library(ggplot2)
library(reshape2)
A <- read_excel("jiaohu_result.xlsx", sheet = 8)
data <- as.data.frame(A)
data
# 宽格式转换为三列长格式
datamelt <- melt(data, id.vars = "variable", # 你不想改变的数据列
measure.vars = 2:9, # 你要melt的数据
variable.name = "variable2", # melt操作后,为新列变量取名,即第二列列名
value.name = "values" # 新列对应值的变量名,即第三列列名
)
# 删除第三列为空值所有行
datamelt_filtered <- subset(datamelt, !is.na(datamelt$values))
# 将 value 列转换为连续变量
datamelt_filtered$value <- as.numeric(datamelt_filtered$values)
# 查看过滤后的数据框
datamelt_filtered
数据格式:
其中需要定义第一列的列名!!! 运行结果:
> data
variable X1 X2 X3 X4 X5 X6 X7 X8
1 X1 7.33 NA NA NA NA NA NA NA
2 X2 3.23 6.44 NA NA NA NA NA NA
3 X3 7.49 4.49 4.80 NA NA NA NA NA
4 X4 9.47 8.48 8.03 7.10 NA NA NA NA
5 X5 4.75 6.70 7.18 8.42 7.37 NA NA NA
6 X6 7.18 5.84 1.85 7.95 9.64 3.17 NA NA
7 X7 9.31 8.04 6.48 8.85 1.66 9.13 9.88 NA
8 X8 6.05 8.57 7.87 9.61 3.80 6.40 8.05 8.83
> # 查看过滤后的数据框
> datamelt_filtered
variable variable2 q value
1 X1 X1 7.33
2 X2 X1 3.23
3 X3 X1 7.49
4 X4 X1 9.47
5 X5 X1 4.75
6 X6 X1 7.18
7 X7 X1 9.31
8 X8 X1 6.05
10 X2 X2 6.44
11 X3 X2 4.49
12 X4 X2 8.48
13 X5 X2 6.70
14 X6 X2 5.84
15 X7 X2 8.04
16 X8 X2 8.57
19 X3 X3 4.80
20 X4 X3 8.03
21 X5 X3 7.18
22 X6 X3 1.85
23 X7 X3 6.48
24 X8 X3 7.87
28 X4 X4 7.10
29 X5 X4 8.42
30 X6 X4 7.95
31 X7 X4 8.85
32 X8 X4 9.61
37 X5 X5 7.37
38 X6 X5 9.64
39 X7 X5 1.66
40 X8 X5 3.80
46 X6 X6 3.17
47 X7 X6 9.13
48 X8 X6 6.40
55 X7 X7 9.88
56 X8 X7 8.05
64 X8 X8 8.83
3. 参考
- R语言 melt()函数使用
- R语言学习笔记(二)——melt()函数之整齐数据
- corrplot包画相关性图详解