R: Ошибка в тепловой карте (данные): 'x' должно быть числовой матрицейК какому «х» это относится? - PullRequest
0 голосов
/ 19 января 2019

Я пытаюсь создать тепловую карту в R. Это мой набор данных:

Team, Att_L, Att_M, Att_R,
Aston Villa, 0.37, 0.24, 0.39
Birmingham City, 0.34, 0.26, 0.4
Blackburn Rovers, 0.38, 0.26, 0.36
Bolton Wanderers, 0.32, 0.27, 0.41
Brentford, 0.34, 0.28, 0.38
Bristol City, 0.37, 0.26, 0.37
Derby County, 0.34, 0.26, 0.4
Hull City, 0.38, 0.21, 0.41
Ipswich Town, 0.33, 0.24, 0.43
Leeds United, 0.37, 0.24, 0.39
Middlesbrough, 0.37, 0.25, 0.38
Millwall, 0.3, 0.24, 0.46
Norwich City, 0.36, 0.24, 0.4
Nottingham Forest, 0.37, 0.22, 0.41
Preston North End, 0.35, 0.26, 0.39
Queens Park Rangers, 0.35, 0.24, 0.41
Reading, 0.37, 0.23, 0.4
Rotherham United, 0.38, 0.27, 0.35
Sheffield United, 0.41, 0.21, 0.38
Sheffield Wednesday, 0.37, 0.29, 0.34
Stoke City, 0.36, 0.25, 0.39
Swansea City, 0.38, 0.24, 0.38
West Bromwich Albion, 0.38, 0.25, 0.37
Wigan Athletic, 0.38, 0.24, 0.38

Он начинается как тиббл под названием Pitch_axis. Я преобразую это в таблицу и использую gather(), чтобы подготовить данные для тепловой карты.

 data2 <- as.data.table(gather(Pitch_axis, variable, value, Att_L:Att_R))

Затем я пытаюсь запустить на нем heatmap ():

 heatmap(data2)

Это возвращает ошибку:

>Error in heatmap(data2) : 'x' must be a numeric matrix

Я не понимаю этого по двум направлениям: 1. Я не понимаю, какая переменная равна 'x' 2. Я попытался преобразовать в матрицу, и все наблюдения вышли в двойном "", так что предположительно в виде строк.

Есть идеи как это исправить?

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Я в конце концов получил это.

        ggplot(data2, aes(Team, variable)) +
  geom_tile(aes(fill = value), color = "white") +
  scale_fill_gradient(low = "yellow", high = "red") +
  ylab("") +
  xlab("") +
  theme(legend.title = element_text(size = 10),
        legend.text = element_text(size = 12),
        plot.title = element_text(size=16),
        axis.title=element_text(size=14,face="bold"),
        axis.text.x = element_text(angle = 90, hjust = 1)) +
  ggtitle("Attack more down left, right or centre?",
          subtitle = "") +
  labs(fill = "%age") +
coord_flip()
0 голосов
/ 19 января 2019

Попробуйте это?Единственный представитель!

library(tidyverse)
df<-as.tibble(df)
df<-df %>% 
  gather("id","value",2:ncol(.))

df2<-matrix(df$value,4,8)


 heatmap(df2,labRow=df$Team,labCol = df$id)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...