不同的结果应用 geom_tile 而不是热图

Different results apply geom_tile instead of heatmap

我试图模糊地应用 geom_tile 或热图,但应用它们时的结果完全不同。

我想我明白为什么了,我认为这是因为它们之间不同变量的单位不同。因此,虽然热图函数理解这一点并且只比较同一列中的相同变量,但 geom_tile 要求包含在数据集中的所有变量都以相同的单位表示。

1) 我的假设错了吗? 2) 有一种方法可以使用 geom_tile 并获得与 heatmap?

生成的结果相同的结果

使用热图函数的示例:

library(ggplot2)
library(RColorBrewer)
library(readr)
url_soccer <-  'https://raw.githubusercontent.com/frm1789/soccer_ea/master/Example_Data_Matrix_heatmap.csv'

df_matrix <- read_csv(url_soccer)
# Order data for titles
df_matrix <- df_matrix[order(df_matrix$Titles, decreasing = FALSE),]
df_matrix <- data.frame(df_matrix)

#removing names of the teams.
row.names(df_matrix) <- df_matrix$Team
df_matrix <- df_matrix[,-1]

options(digits=2)
df_matrix$Points_1 <- sub(',', '.', df_matrix$Points_1)
df_matrix$Points_1 <- as.double(df_matrix$Points_1)

# transformation to numeric for column "Performance"
df_matrix$Performance = 
substr(df_matrix$Performance,1,nchar(df_matrix$Performance)-1)
df_matrix$Performance <- sub(',', '.', df_matrix$Performance)
df_matrix$Performance <- as.double(df_matrix$Performance)
df_matrix$Performance <- log(df_matrix$Performance)

small_matrix <- data.matrix(df_matrix)

# Creation of heatmap
america_heatmap <- heatmap(small_matrix, Rowv=NA, 
                       Colv=NA, col = brewer.pal(9, "Blues"), 
scale="column", 
                       margins=c(2,6))

使用 geom_tile 函数的示例:

url_soccer 'https://raw.githubusercontent.com/frm1789/soccer_ea/master/Example_Data_format_ggplot_geom_tile.csv'

df_exa <- read_csv(url_soccer)
ggplot(data = df_exa, aes(x = df_exa$country, y = df_exa$metric)) +
geom_tile(aes(fill = df_exa$value)) +
coord_flip()+ 
theme_minimal()

要点1)初步假设正确

在这个例子中,对于这个数据集,不能使用geom_tile,因为geom_tile的工作方式是将所有数据分成更小的矩形或正方形。每个较小的矩形称为一个图块。对于列或行,没有考虑不同比例的参数,因为 geom_tile 假设所有数据集都以相同的单位表示。

在这个例子中,我们用不同的单位表示变量,如目标、表现、分数,它们之间没有关系。

另一方面,热图允许您使用参数 "scale",对于这种情况,我们使用 scale= "column",表示应该为每一列缩放值。

要点 2) 有一种方法可以做到这一点: