• 记录:R语言生成热图(非相关性)


    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()
      )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    结果展示:

    在这里插入图片描述

    这里放一张别人论文里面的气泡图:
    在这里插入图片描述

    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
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

      数据格式:

    在这里插入图片描述

    其中需要定义第一列的列名!!!
      运行结果:

    > 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    > # 查看过滤后的数据框
    > 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39

    3. 参考

  • 相关阅读:
    jsp文件中模板字符串变量${}失效
    vivo大数据日志采集Agent设计实践
    Monaco-Editor 多人协作 编辑器
    few shot learnning笔记
    excel 点击单元格的内容 跳转到其他sheet设置
    python 读写csv文件
    Guava中的使用
    递归经典例题 --- 青蛙跳台阶(图文详解)
    Redission 使用Jackson处理LocalDateTime的一些坑
    旅游门户/旅行社网站-pc+移动端+可小程序+app强大功能-适合运营周边游/国内游/出境游
  • 原文地址:https://blog.csdn.net/amyniez/article/details/133800005