Простая тепловая карта в R не работает с ошибкой `Ошибка в is.finite (x): метод по умолчанию не реализован для типа 'list' '' - PullRequest
0 голосов
/ 13 июля 2020

Я пытаюсь создать простую тепловую карту из простого фрейма данных в R. Пример полностью воспроизводится.

У меня есть простой data.frame из набора данных о раке дыхания.

data(BreastCancer, package="mlbench")
bc <- BreastCancer[complete.cases(BreastCancer), ]

Я использую ggplot, чтобы попытаться создать простую тепловую карту, используя следующий код:

x <- bc[2:9]
y <- bc[10]
data <- expand.grid(X=x, Y=y)

# Heatmap 
ggplot(data, aes(X, Y)) + 
  geom_tile()

, однако я получаю следующую ошибку:

Error in is.finite(x) : default method not implemented for type 'list'

Я следовал примеру на ggplot2 и не понимаю эту ошибку и довольно новый пользователь R.

Кто-нибудь может помочь, пожалуйста.

Спасибо

1 Ответ

0 голосов
/ 13 июля 2020

какой сюжет вы ищете? Вы даете ggplot список, в котором он ожидает data.frame. Какие переменные вы хотите использовать по осям X и Y?

ggplot(data[[1]], aes(Cl.thickness, Cell.size)) + geom_tile()

enter image description here

I feel like you may be wanting to plot this simply from bc data.frame.

ggplot(bc, aes(x = Cl.thickness, y = Cell.size)) + 
+ geom_tile(aes(fill = Cell.shape))

Based on your comment i think you need a different way to handle your data than expand.grid and then to use facet like this:

library(dplyr)
library(tidyr)
xdat <- bc %>% gather(variable, value, -Id, - Mitoses)
ggplot(xdat, aes(x = Mitoses, y = value)) + 
  geom_tile() +
  facet_wrap(~ variable)

введите описание изображения здесь

...