R语言 使用ggplot2在R中创建热图

R语言 使用ggplot2在R中创建热图

热图将数据框架的两个属性之间的关系描述为一个彩色编码的瓦片。热图用数据框架的多个属性产生一个网格,表示一次两个属性之间的关系。

让我们首先创建一个相关矩阵来了解不同属性之间的关系,为此我们使用了cor()函数。

语法: cor(dataframe)

注意: 当数据框架由数值以外的值组成时,这个函数会失效,所以我们也将使用sapply()方法。

例子

df <- read.csv("bestsellers.csv")
 
cor(df[sapply(df, is.numeric)])

输出

使用ggplot2在R中创建热图

现在我们有了一个相关矩阵,我们必须把它融化成一个可以创建热图的形式。为此,我们使用了reshape2库的melt()函数。

R编程中的熔化是为了组织数据。它是通过 melt() 函数进行的,该函数需要数据集和必须保持不变的列值。使用 melt() ,数据框架被转换为长格式,并将数据框架拉长。

语法: melt(data, na.rm = FALSE, value.name = "value")

参数

  • data: 代表需要重塑的数据集。
  • na.rm: 如果是TRUE,则从数据集中删除NA值。
  • value.name: 代表用于存储数值的变量的名称。

例子

library(ggplot2)
library(reshape2)
 
df <- read.csv("bestsellers.csv")
 
data <- cor(df[sapply(df,is.numeric)])
 
data1 <- melt(data)
 
head(data1)

输出

使用ggplot2在R中创建热图

为了用这样产生的熔化数据创建热图,我们使用了ggplot2库的geom_tile()函数。它基本上是用来创建热图的。

语法: geom_tile(x,y,fill)

参数

  • x:X轴上的位置
  • y:y轴上的位置
  • fill:将被转换为颜色的数字值

在这个函数中,融化的数据框架的Var1和Var2被分别传递给x和y。这些表示属性之间的关系,一次取两个。对填充参数提供,因为这将被用来根据一些数字值对瓷砖进行颜色编码。

例子

library(ggplot2)
library(reshape2)
 
df <- read.csv("bestsellers.csv")
 
data <- cor(df[sapply(df,is.numeric)])
 
data1 <- melt(data)
 
ggplot(data1, aes(x = Var1,
                  y = Var2,
                  fill = value))+geom_tile()

输出:

使用ggplot2在R中创建热图

改变颜色

绘图的颜色可以通过三个函数来改变

  • scale_fill_gradient(): 在绘图中添加极端的颜色。

语法:

scale_fill_gradient(high, low)

参数

  • low:突出小值的颜色
  • high:突出大值的颜色
library(ggplot2)
library(reshape2)
 
df<-read.csv("bestsellers.csv")
 
data<-cor(df[sapply(df,is.numeric)])
 
data1<-melt(data)
 
ggplot(data1,aes(x = Var1, y = Var2, fill = value))+
geom_tile()+scale_fill_gradient(high = "green", low = "white")

输出

使用ggplot2在R中创建热图

  • scale_fill_distiller(): 它用于根据ColorBrewer调色板进行定制。

语法: scale_fill_distiller(palette)

library(ggplot2)
library(reshape2)
 
df<-read.csv("bestsellers.csv")
 
data<-cor(df[sapply(df, is.numeric)])
 
data1<-melt(data)
 
ggplot(data1,aes(x = Var1, y = Var2,fill = value))+
geom_tile() + scale_fill_distiller(palette = "Spectral")

输出

使用ggplot2在R中创建热图

  • scale_fill_viridis(): 使用viridis。在这个函数中,discrete被设置为FALSE。

语法: scale_fill_viridis(discrete)

library(ggplot2)
library(reshape2)
library(viridis)
 
df<-read.csv("bestsellers.csv")
 
data<-cor(df[sapply(df,is.numeric)])
 
data1<-melt(data)
 
ggplot(data1, aes(x = Var1, y = Var2, fill = value))+
geom_tile() + scale_fill_viridis(discrete = FALSE)

输出

使用ggplot2在R中创建热图

对行进行排序

热图可以通过重新排序其y元素来重新排序。这可以通过reorder()来完成。

语法: reorder(y_value,value)

其中, Value是要重新排序的元素。

library(ggplot2)
library(reshape2)
 
df<-read.csv("bestsellers.csv")
 
data<-cor(df[sapply(df,is.numeric)])
 
data1<-melt(data)
 
ggplot(data1,aes(x = Var1, y = reorder(Var2, value),
                 fill = value)) + geom_tile()

输出

使用ggplot2在R中创建热图

添加标题

标题可以被添加到热图中,使其具有描述性。它可以通过使用ggtitle()来完成。

语法: ggtitle(“标题”)

library(ggplot2)
library(reshape2)
 
df<-read.csv("bestsellers.csv")
 
data<-cor(df[sapply(df,is.numeric)])
 
data1<-melt(data)
 
ggplot(data1, aes(x = Var1, y = Var2, fill = value))+
geom_tile()+ggtitle("Bestsellers")

输出

使用ggplot2在R中创建热图

移除标签

热力图的标签也可以被移除,只显示它所代表的相应数值。如果我们删除标签,保留刻度线就没有意义了。我们可以使用theme()函数axis.ticks和axis.text的属性,并将它们设置为 element_blank()。

语法: theme(axis.ticks = element_blank(), axis.text = element_blank())

library(ggplot2)
library(reshape2)
 
df<-read.csv("bestsellers.csv")
 
data<-cor(df[sapply(df,is.numeric)])
 
data1<-melt(data)
 
ggplot(data1,aes(x=Var1,y=Var2,fill=value))+geom_tile()+
  theme(axis.ticks = element_blank(),
        axis.text = element_blank())

输出

使用ggplot2在R中创建热图

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程