Как создать тепловую карту с помощью ggplot2?

StackOverflow https://stackoverflow.com/questions/8406394

  •  28-10-2019
  •  | 
  •  

Вопрос

Я пытаюсь создать тепловую карту с помощью ggplot2. Я нашел этот пример , который я, по сути, пытаюсь для репликации с моими данными, но у меня возникают трудности. Мои данные - это простой файл .csv, который выглядит так:

родовое слово

Я хотел бы создать простую тепловую карту, на которой название фрукта находится на оси x, а человек - на оси y. На графике должны быть изображены квадраты, где цвет каждого квадрата представляет количество съеденных фруктов. Квадрат, соответствующий общему коду кодового тега, должен быть самым темным.

Вот код, который я использую для создания тепловой карты:

родовое слово

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

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

Это было полезно?

Решение

Если честно, @ dr.bunsen - ваш приведенный выше пример плохо воспроизводился, и вы не читали первую часть руководства, которое вы ссылка .Вот, вероятно, то, что вы ищете:

родовое слово

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

Другие советы

Семь (!) лет спустя лучший способ правильно отформатировать ваши данные - это использовать tidyr, а не reshape

Используя gather из tidyr, очень легко переформатировать ваши данные, чтобы получить ожидаемые 3 столбца (person для оси Y, fruit для оси x и count для значений):

родовое слово

Теперь данные выглядят так:

родовое слово

Отлично! Приступим к построению. Основная геометрия для создания тепловой карты с помощью ggplot2 - это geom_tile, для которого мы предоставим эстетический код x, y и fill.

родовое слово

 первая попытка

Хорошо, неплохо, но мы можем добиться большего.

  • Для тепловых карт мне нравится черно-белая тема theme_bw(), которая избавляется от серого фона.
  • Мне также нравится использовать палитру из RColorBrewerdirection = 1 для получения более темных цветов для более высоких значений или -1 в противном случае). Доступных палитр очень много: Reds, Blues, Spectral, RdYlBu (красный-желтый-синий), RdBu (красный-синий) и т.д. Ниже я использую «Greens». Запустите RColorBrewer::display.brewer.all(), чтобы увидеть, как выглядят палитры.

  • Если вы хотите, чтобы плитки были возведены в квадрат, просто используйте coord_equal().

  • Я часто считаю, что легенда бесполезна, но это зависит от вашего конкретного случая использования. Вы можете скрыть легенду сгенерированного кодового кода с помощью генерического кода кода.

  • Вы можете распечатать значения поверх плиток, используя fill (или guides(fill=F)). Это требует эстетики, geom_text, geom_label и x, но в нашем случае, y и label наследуются. Вы также можете напечатать более высокие значения большего размера, передав код x в качестве эстетического - в этом случае вы также захотите передать код y в size=count, чтобы скрыть легенду размера.

  • Вы можете рисовать линии вокруг плиток, передавая size=F в guides.

Собираем все вместе:

родовое слово

 Окончательная тепловая карта

Чтобы удалить что-либо, просто удалите соответствующую строку.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top