Построить график рассеяния (или X, Y) по обработке за другой период времени - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть данные (R dataframe), подобные этому:

Treatment   Diameter(inches).Sep    Diameter(inches).Dec
Aux_Drop    NA  NA
Aux_Spray    3.7    2
DMSO    NA  NA
Water   4.2 2
Aux_Drop    2.6 3
Aux_Spray    3.7    3
DMSO    4   2
Water   5.2 1
Aux_Drop    5.4 2
Aux_Spray    3.4    2
DMSO    4.8 2
Water   4.2 2
Aux_Drop    4.7 2
Aux_Spray    2.7    2
DMSO    3.4 2
Water   4.9 2
.......
.......

Я хочу построить точечный (или x, y) график diameter для каждой treatment группы. Я нашел lattice библиотечный сюжет более полезным, и я использовал:

require(lattice)
xyplot(`Diameter(inches).Sep` ~ Treatment , merged.Sep.Dec.Mar, pch= 20)

для генерации участка:

enter image description here

Однако Я хочу добавить график рассеяния для «Диаметр от декабря» рядом с «Диаметр сентября» для каждой обработки с другим цветом. Я не могу найти работоспособный пример, который я можно использовать для моих целей до сих пор.

Метод с lattice, ggplot2 или base plot или любым другим был бы действительно полезным.

Спасибо

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Вот решение tidyverse. Он использует tidyr::gather, чтобы поместить два типа диаметра в один столбец. Вы можете затем фасетировать значения в этом столбце. Я скрываю цветовую легенду, так как категории видны по меткам оси.

Предполагая, что фрейм данных имеет имя mydata.

library(tidyverse)
mydata %>% 
  gather(Result, Value, -Treatment) %>% 
    ggplot(aes(Result, Value)) + 
    geom_jitter(aes(color = Result), 
                width = 0.1) + 
    facet_wrap(~Treatment) +
    guides(color = FALSE)

enter image description here

0 голосов
/ 13 сентября 2018

Как-то так?

library(tidyverse)
df %>%
    gather(Month, Diameter, -Treatment) %>%
    ggplot(aes(Treatment, Diameter)) +
    geom_point(aes(colour = Month), position = position_dodge(width = 0.9))

enter image description here

Вы можете отрегулировать расстояние между разными цветными точками, изменив width внутри position_dodge.


Пример данных

df <- read.table(text =
    "Treatment   Diameter(inches).Sep    Diameter(inches).Dec
Aux_Drop    NA  NA
Aux_Spray    3.7    2
DMSO    NA  NA
Water   4.2 2
Aux_Drop    2.6 3
Aux_Spray    3.7    3
DMSO    4   2
Water   5.2 1
Aux_Drop    5.4 2
Aux_Spray    3.4    2
DMSO    4.8 2
Water   4.2 2
Aux_Drop    4.7 2
Aux_Spray    2.7    2
DMSO    3.4 2
Water   4.9 2", header = T)
...