ggplot2 pch 21 заполнить внутри не работает

Я пытаюсь создать диаграмму рассеяния, где форма символа и его заполнение задаются двумя разными переменными. Вот пример моих данных:

Sample  Experiment  Replicate  EPS  Time  Group
1 1  1  5  24  Wild-type
2 1  3  4.5  24  Wild-type
3 2  2  2  24  Wild-type
4 1  2  6  24  Variant
5 2  1  4  24  Variant
6 1  2  3  48  Wild-type
7 1  3  2.5  48  Wild-type
8 2  3  3.5  48  Wild-type
9 1  2  3.5  48  Variant
10 2  2  6.5  48  Variant
11 1  1  3  72  Wild-type
12 2  3  3.5  72  Wild-type
13 1  3  9.5  72  Variant
14 2  3  12.5  72  Variant

Вот код, который я использую. Все работает отлично, за исключением того, что нет ни одного из моих символов:

fig.one<-read.table(file='data/Figure1.txt', header=TRUE)

fig.one$time.cat[fig.one$Time == 24] <- 2.5
fig.one$time.cat[fig.one$Time == 48] <- 6
fig.one$time.cat[fig.one$Time == 72] <- 9.5

fig.one$scat.adj[fig.one$Group=='Wild-type']<- -0.50
fig.one$scat.adj[fig.one$Group=='Variant']<- 0.50

my.pch<-c(21,24)
my.bg<-c('black','white')

ggplot(fig.one, aes(time.cat, EPS, shape=my.pch[Experiment]),fill=my.bg[factor(Group)]) +
  geom_jitter(aes(time.cat + scat.adj,EPS),
               position=position_jitter(width=0.2,height=0),
               alpha=0.6,
               size=3) +
  scale_fill_identity() +
  scale_shape_identity() +
  scale_x_continuous("Time since inoculation (hours)", breaks=c(2.5,6,9.5),labels=c( "24", "48", "72"), limits=c(1,11)) +
  ylab("EPS (grams per litre)") +
  theme(axis.text=element_text(size=12, face='bold'),
        axis.title=element_text(size=14, face='bold'),
        panel.grid.major = element_blank(), panel.grid.minor = element_blank())

Спасибо как всегда за помощь!

2 ответа

Если вам мешает цвет заливки, попробуйте использовать color вместо fill, Вот воспроизводимый пример:

my.bg <- c('black','white', 'blue')

ggplot(iris, aes(Sepal.Width, Petal.Length, color = my.bg[factor(Species)])) +
  geom_jitter() +
  scale_color_identity()

Ваш аргумент заполнения определен вне функции aes(). Попробуйте переписать первую строку ggplot как

ggplot(fig.one, aes(time.cat, EPS, shape=my.pch[эксперимент], fill=my.bg[фактор (группа)])) + ...

Другие вопросы по тегам