Почему часть этого geom_density не включена в сюжет? - PullRequest
2 голосов
/ 28 марта 2020

Пожалуйста, найдите мои данные p.plot ниже

Я сделал этот график

enter image description here

К сожалению, похоже, что начальные части каждого geom_density вокруг x = 0 были пропущены. Сюжет должен выглядеть следующим образом:

enter image description here

Сюжет был ранее сделан с помощью help из StackOverflow, где он, казалось, работал , Однако я понятия не имею, что не так с текущим кодом / управлением данными.

Мой код

cols = c("#1C73C2", "red", "black")

ggplot(p.plot, aes(time.recur.years, colour=ki67in, fill=ki67in)) +
  geom_density(aes(y=..count..), alpha=0.2) + 
  #geom_bar(alpha=0.7) +
  geom_rug(aes(y=0), position=position_jitter(width=0.05, height=0), 
           length=unit(0.05, "npc"), show.legend=FALSE) +
  coord_cartesian(xlim=c(0,11)) +
  scale_x_continuous(name="Years to recurrence", breaks=0:11, expand=c(0,0)) +
  scale_y_continuous(name="Number of recurrences", limits=c(0, 6), breaks=0:6, expand=c(0,0)) +
  scale_colour_manual(values=cols) +
  scale_fill_manual(values=cols) + 
  labs(colour="", fill="") +
  theme_classic() +
  theme(panel.grid.major = element_line(colour = "gray98"),
        panel.grid.minor = element_line(colour = "gray98"),
        legend.position=c(0.7,0.8))

Мои данные

p.plot <- structure(list(time.recur.years = c(0.5, 0.666666666666667, 1, 
1.25, 3.16666666666667, 4.08333333333333, 4.41666666666667, 4.75, 
4.83333333333333, 4.83333333333333, 5, 6.16666666666667, 7.41666666666667, 
7.5, 7.66666666666667, 10.3333333333333, 0.25, 0.333333333333333, 
0.416666666666667, 0.666666666666667, 0.75, 1.41666666666667, 
3.25, 4.5, 9.83333333333333, 0.166666666666667, 0.333333333333333, 
0.583333333333333, 0.666666666666667, 4.66666666666667), ki67in = structure(c(1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L), .Label = c("Ki-67 proliferative index: 0 - 4%", 
"Ki-67 proliferative index: 5 - 9%", "Ki-67 proliferative index: ≥10%"
), class = "factor")), class = "data.frame", row.names = c(NA, 
-30L))

1 Ответ

1 голос
/ 28 марта 2020

Это кажется новым в ggplot 3.3.0 - и новый способ не рисовать полные полигоны. Я нахожу это на самом деле довольно приятно!

Если вам нужен полный многоугольник - теперь есть новый аргумент outline.type. См. Также ?geom_density

Я также добавил строку с данными для 0, поэтому рисовать многоугольник действительно до 0.

library(tidyverse)

df_add <- rbind(p.plot, data.frame(time.recur.years = 0, ki67in =unique(p.plot$ki67in)))

ggplot(df_add, aes(time.recur.years, colour=ki67in, fill=ki67in)) +
  geom_density(aes(y=..count..), alpha=0.2, outline.type = 'full') 

Создано в 2020-03-28 пакетом Представления (v0.3.0)

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