R вручную установить форму по фактору

Задал этот вопрос на днях, но никто не смог визуализировать мой вопрос, поэтому я сделал пример.

A <- c('a','b', 'c','d','e')
types <- factor(A)
B <- c(1,2,3,4,5)
C <- c(6,7,8,9,10)
D <- c(1,2,1,2,3)
ABC <- data.frame(B,C,D,types)

library(ggplot2)

ggplot(ABC, aes(x=B ,y=C ,size=D, colour=as.factor(types),label=types, shape=as.factor(types))) +
geom_point()+geom_text(size=2, hjust=0,colour="black", vjust=0) +
scale_size_area(max_size=20, "D", breaks=c(100,500,1000,3000,5000))  +
scale_x_log10(lim=c(0.05,10),breaks=c(0.1,1,10))+ scale_y_continuous(lim=c(0,30000000)) +
scale_shape_manual(values=c(15,18,16,17,19))`

При составлении графика вы увидите, что есть факторы, которым приписывают цвета и формы.

В моем коде я использую scale_shape_manual, чтобы установить фигуры, и они определяются последовательностью, то есть порядок факторов a, b, c, d, e, а мои значения 15,18,16,17,19, поэтому a = 15 (a квадрат), б = 18 и т. д.

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

Так что, очевидно, этот код не работает, но что-то вроде:

scale_shape_manual(values=('a'=15, 'b'=18, 'c'=16, 'd'=17, 'e'=19))

Было бы полезно, если бы я мог сделать то же самое для цвета тоже.

Спасибо

Ответы на вопрос(1)

Ваш ответ на вопрос