Создание тепловой карты с помощью R

Я хочу создать тепловую карту для отображения имеющихся у меня данных. Данные состоят из 3 столбцов по 100 строк. Я использовал следующий код для создания тепловой карты с помощью пакета ggplot в R.

x=c("x1","x2","x3")
y=paste0("var",seq(1,100))
datax=expand.grid(x,y)
datax$z=runif(300,0,5)
require(ggplot2)
ggplot(datax, aes(Var1, Var2, fill= z)) + 
  geom_tile()

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

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

Спасибо


person student_R123    schedule 17.07.2021    source источник
comment
Отвечает ли это на ваш вопрос? тепловая карта корреляции с использованием тепловой карты R   -  person Galen    schedule 17.07.2021
comment
@Galen Боюсь, что это не так. Я просто хочу создать тепловую карту для необработанных данных. Не для соотношений   -  person student_R123    schedule 17.07.2021


Ответы (1)


Причина, по которой они прямоугольные, заключается в том, что на оси y много значений, а на оси x всего несколько. Если вы хотите, чтобы они были квадратными, вам нужно явно сохранить график с определенным размером.

Запустите это сразу после команды ggplot (без +) и поэкспериментируйте с width и height. По умолчанию он сохранит последний отображаемый график.

ggsave("filename.pdf", device = "pdf", width = <w>, height = <h>)

Чтобы получить метки x сверху, используйте + scale_x_discrete(position="top"). Чтобы полностью удалить переменные оси Y, используйте + theme(axis.text.x=element_blank()) (обе после вызова ggplot)

Другие идеи:

  • если вам нужно больше места, снимите метки x и y с + xlab(NULL) + ylab(NULL) после geom_tile()
  • так как это, вероятно, будет высокий, тонкий график, в зависимости от того, есть ли у вас другая переменная var3, которую можно использовать для подмножества оси Y, вы можете использовать facet_wrap(~var3), чтобы разбить гигантскую тепловую карту на более мелкие, более квадратные тепловые карты.
person petrucci4prez    schedule 17.07.2021