График джиттера в ggplot2, цвет на 1 переменную, оттенок на другую переменную? - PullRequest
2 голосов
/ 24 июня 2010

Много часов маниакального поиска в Google и перелистывания документации ggplot2 не приблизили меня, я надеялся, что кто-то может подтолкнуть меня в правильном направлении.

У меня есть данные подсчета ячеек для нескольких тысяч субъектов в data.frame со следующим макетом:

  • 1 предмет на строку.
  • 1 столбец для каждого типа ячеек (всего 5, каждый содержит процентное значение для этого типа ячеек, суммируя до 100%).
  • 2 дополнительных столбца, один для указания, к какой группе (экспериментальная или контрольная) принадлежат субъекты, 1 для указания, к какому эксперименту они принадлежат (1, 2, 3, 4 и т. Д.)

Я хотел бы сгенерировать график дрожания ggplot2, процентное соотношение вдоль оси Y, категории типов ячеек вдоль оси X (всего 5) и дополнительно раскрасить точки данных на основе их группы (экспериментальная или контрольная). Было бы здорово, если бы я мог дополнительно раскрасить точки данных из разных экспериментов в оттенки цвета группы (т. Е. С помощью номера эксперимента определить градиент от светлого к темному - все точки эксперимента 1 были бы светлыми - либо красным, либо синим на основе к какой группе они принадлежали), но я не знаю, возможно ли это вообще.

Для начала: правильно ли выложены мои данные, чтобы попытаться создать этот график? Причина, по которой я спрашиваю, заключается в том, что я действительно чувствую, что я борюсь с ggplot2, пытаясь получить что-либо, отображаемое с помощью data.frame в его текущем макете (но родной boxplot (), кажется, работает нормально с очень небольшими изменениями ...)

Буду признателен за любую помощь или толчок в правильном направлении.


EDIT:

Это вывод dput(head(dat, 10)).

structure(list(Neutrophils = c(38, 70.7, 62.1, 90.5, 65.8, 39.2, 
89.4, 91.3, 55.4, 14.5), Lymphocytes = c(47.5, 17.1, 20.3, 2, 
25, 37.1, 6.3, 1.6, 31.3, 61.5), Monocytes = c(12.4, 11.8, 14.6, 
4.8, 7.3, 14.1, 3.7, 4.6, 8.4, 21.9), Eosinophils = c(1.4, 0.1, 
2.5, 2.4, 1.4, 9.2, 0.1, 2.5, 4.6, 1.3), Basophils = c(0.8, 0.3, 
0.5, 0.3, 0.5, 0.4, 0.5, 0, 0.3, 0.8), Group = c(1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L)), .Names = c("Neutrophils", "Lymphocytes", 
"Monocytes", "Eosinophils", "Basophils", "Group"), row.names = c("B145", 
"B196", "B212", "B246", "B250", "B286", "B343", "B355", "B369", 
"B386"), class = "data.frame")

Ответы [ 2 ]

1 голос
/ 24 июня 2010

Сначала вам нужно изменить форму данных с помощью функции melt в пакете reshape.

Я уверен, что кто-то найдет более элегантный способ раскраски точек на градиенте, но выможно сделать это вручную, создав новый столбец с цветами, подобранными для группы и / или эксперимента.Затем сопоставьте эстетический цвет с этим столбцом.

0 голосов
/ 24 июня 2010

Было бы здорово, если бы я мог дополнительно раскрасить точки данных из разных экспериментов в оттенки цвета группы (т. Е. С помощью номера эксперимента определить градиент от светлого к темному - все точки эксперимента-1 были бы светлыми)либо красный, либо синий в зависимости от того, к какой группе они принадлежали), но я не знаю, возможно ли это.

В настоящее время нет, извините.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...