Как сделать геометрическую точку специфичной для каждого условия, используя scale_shape_manual?

#r #ggplot2

#r #ggplot2

Вопрос:

Я создаю PCA на ggplot, и мне нужно придать точкам конкретные формы для каждого условия. Я использовал следующий код:

 cisr5_plot <- ggplot(cisr5scores, aes(x=PC1, y=PC2)) 
  geom_point(size= 4.5, aes(fill=cisr5$Treatment), shape =21, colour="black") 
  scale_fill_manual(breaks=c("Cells","HIV-1 R5", "LPS", "M. bovis", "H37Rv", "HN878", "CDC1551", "EU127"),
                      values=c("Cells" = "black", "HIV-1 R5" = "ivory3", "LPS" = "royalblue4", "M. bovis" = "darkcyan", "HN878" = "sandybrown", "H37Rv" = "seagreen4", "EU127" = "darkorange1", "CDC1551" = "orangered1")) 
  xlab(paste("PC1 ", "(",cisr5exp12[1],"%", sep="")) 
  ylab(paste("PC1 ", "(",cisr5exp12[2],"%", sep="")) 
  theme(axis.title.y = element_text(size = 24, family = "sans"),
        legend.position = "bottom",
        legend.text = element_text(size = 22, family = "sans"),
        axis.text.x = element_text(colour ="black", size = 22, family = "sans"),
        axis.text.y = element_text(colour ="black", size = 22, family = "sans"),
        axis.title.x = element_text(colour = "black", size = 24, family = "sans"),
        legend.title = element_blank(),
        panel.background = element_blank(),
        axis.line = element_line(colour = "black"),
        plot.title = element_text(size = 10, hjust = 0.5)) 
  theme(legend.key = element_rect(fill = "white"))
  

Для создания этого графика:

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

Но я хочу изменить каждую отдельную фигуру, и я целую вечность пытался использовать scale_shape_manual, и это просто меняет их все на черный. Любая помощь будет оценена.

Спасибо!

Комментарии:

1. посмотрите здесь: sape.inf.usi.ch/quick-reference/ggplot2/shape

2. Привет, спасибо за это, но, к сожалению, я не могу понять, что это наше. Я добавил это в свой код cisr5_plot <- ggplot(cisr5scores, aes(x=PC1, y=PC2)) geom_point(size= 4.5, aes(fill=cisr5$Treatment), shape =21, colour="black") scale_shape_manual(values=c("Cells" = "21", "HIV-1 R5" = "21", "LPS" = "24", "M. bovis" = "23", "HN878" = "24", "H37Rv" = "21", "EU127" = "24", "CDC1551" = "21")) , но, похоже, это не сработало

3. Пожалуйста, опубликуйте некоторые примеры данных, используя dput() в вашем вопросе.

Ответ №1:

Исправлено использование этого кода для вызова формы в эстетике на основе обработки, а затем для придания форм вручную.

 cisr5_plot <- ggplot(cisr5scores, aes(x=PC1, y=PC2)) 
  geom_point(size= 4.5, aes(fill=cisr5$Treatment, shape = cisr5$Treatment), colour="black") 
  scale_shape_manual(values=c("Cells" = 21,"HIV-1 R5" = 21,"LPS" = 24,"M. bovis" = 23,"HN878" = 24,"H37Rv" = 21,"EU127" = 24,"CDC1551" = 21)) 
  scale_fill_manual(breaks=c("Cells","HIV-1 R5", "LPS", "M. bovis", "H37Rv", "HN878", "CDC1551", "EU127"),
                      values=c("Cells" = "black", "HIV-1 R5" = "ivory3", "LPS" = "royalblue4", "M. bovis" = "darkcyan", "HN878" = "sandybrown", "H37Rv" = "seagreen4", "EU127" = "darkorange1", "CDC1551" = "orangered1")) 
  xlab(paste("PC1 ", "(",cisr5exp12[1],"%", ")", sep="")) 
  ylab(paste("PC1 ", "(",cisr5exp12[2],"%", ")", sep="")) 
  theme(axis.title.y = element_text(size = 24, family = "sans"),
        legend.position = "bottom",
        legend.text = element_text(size = 22, family = "sans"),
        axis.text.x = element_text(colour ="black", size = 22, family = "sans"),
        axis.text.y = element_text(colour ="black", size = 22, family = "sans"),
        axis.title.x = element_text(colour = "black", size = 24, family = "sans"),
        legend.title = element_blank(),
        panel.background = element_blank(),
        axis.line = element_line(colour = "black"),
        plot.title = element_text(size = 10, hjust = 0.5)) 
  theme(legend.key = element_rect(fill = "white"))