【发布时间】:2018-11-24 00:49:56
【问题描述】:
我正在尝试模糊地应用 geom_tile 或 heatmap,但应用它们时的结果完全不同。
我想我明白为什么了,我认为这是因为不同变量的单位不同。因此,虽然 heatmap 函数理解这一点并且只比较同一列中的相同变量,但 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()
【问题讨论】:
-
heatmap()为您做了很多订购工作。你必须在 ggplot2 中故意这样做 -
@hrbrmstr 我不知道。但是,我对那个热图是否正确,它可以让你用不同的单位比较不同的变量,而 geom_tile 要求所有数据集都有一个唯一的单位?