Различные результаты применяют geom_tile вместо heatmap - PullRequest
0 голосов
/ 24 ноября 2018

Я пытаюсь применить geom_tile или heatmap нечетко, но результаты, когда я применяю их, совершенно разные.

Я думаю, что понимаю, почему, я думаю, что это потому, что единицы для другой переменнойразные между ними.Таким образом, хотя функция heatmap понимает это и сравнивает только одну и ту же переменную в одном столбце, geom_tile требует, чтобы все переменные, включенные в набор данных, были выражены в одной и той же единице.

1) Я ошибаюсь в своем предположении?2) Есть способ использовать geom_tile и получить тот же результат, который был сгенерирован тепловой картой?

Пример использования функции тепловой карты:

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))

Result using heatmap

Пример использования функции 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()

Result obtained using geom_tile

1 Ответ

0 голосов
/ 26 ноября 2018

Точка 1) Исходное предположение верно.

В этом примере для этого набора данных невозможно использовать geom_tile, потому что способ, которым работает geom_tile, состоит в том, чтобы разделить вседанные в меньшие прямоугольники или квадраты.Каждый из меньших прямоугольников называется плиткой.Для столбцов или строк нет параметра, который учитывал бы разные масштабы, поскольку geom_tile предполагает, что весь набор данных выражен в одной и той же единице.

В этом примере у нас есть переменные, выраженные в разных единицах, таких как цели, производительность, баллы,и между ними нет никакой взаимосвязи.

С другой стороны, тепловая карта позволяет вам использовать параметр «масштаб», и для этого случая мы используем масштаб = «столбец», указывающий, что значения должны быть масштабированыдля каждого столбца.

Точка 2) Есть способ сделать это: Тепловая карта на столбец с ggplot2

...