Что вы делали, было на полпути. Поскольку у вас есть две используемые эстетики (заливка и цвет), обеим из них нужна легенда. Итак, если вы измените название легенды и метки для заливки, легенда о цвете не изменится и будет построена как есть. Таким образом, решение, чтобы добавить «scale_color_discrete»:
#generate data
set.seed(123)
n=1000
paddling <- data.frame(frequency=runif(n,0,n),
type=sample(c("hand_only","with_feet"),n,T))
#plot
p <- ggplot(data=paddling, aes(frequency, color=type, fill=type)) +
geom_density(alpha=0.2)+
scale_x_continuous(limits=c(0, 1000),name='Frequency (Hz)') +
scale_fill_discrete(name='Paddling type',labels=c("Hands only", "Hands and feet"))+
scale_color_discrete(name='Paddling type',labels=c("Hands only", "Hands and feet"))
p

Это может быть немного громоздким, если у вас есть много отображений уровней. Это другой подход: изменить данные (как имя столбца, так и уровни факторов)
#note the backticks needed for space
paddling$`Paddling type` <- paddling$type
levels(paddling$`Paddling type`)
levels(paddling$`Paddling type`) <- c("Hands only","Hands and feet")
p2 <- p <- ggplot(data=paddling, aes(frequency, color=`Paddling type`, fill=`Paddling type`)) +
geom_density(alpha=0.2)+
scale_x_continuous(limits=c(0, 1000),name='Frequency (Hz)')
Вы попробовали scale_fill_continuous вместо этого? – TKN
Это дает мне ошибку: Ошибка: Дискретное значение, поставляемое для непрерывной шкалы – user3406207