Управление ggplot2 legend look без влияния на сюжет
Я строю линии с ggplot2 вот так:
ggplot(iris, aes(Petal.Width,Petal.Length,color=Species)) + geom_line() + theme_bw()
.
Я считаю, что метки легенды должны быть маленькими, поэтому я хочу, чтобы они были больше. Если я изменю размер, линии на графике тоже изменятся:
ggplot(iris, aes(Petal.Width,Petal.Length,color=Species)) + geom_line(size=4) + theme_bw()
.
но я хочу видеть только толстые линии в легенде, я хочу, чтобы линии на сюжете были тонкими. Я пытался использовать legend.key.size
но он меняет квадрат метки, а не ширину линии:
library(grid) # for unit
ggplot(iris,aes(Petal.Width,Petal.Length,color=Species))+geom_line()+theme_bw() + theme(legend.key.size=unit(1,"cm"))
я тоже пытался используйте очки:
ggplot(iris,aes(Petal.Width,Petal.Length,color=Species)) + geom_line() + geom_point(size=4) + theme_bw()
но, конечно, это все еще влияет как на сюжет, так и на легенду:
Я хотел использовать линии для сюжета и точки/точки для легенды.
поэтому я спрашиваю о двух вещах:
- как изменить ширину линии в легенде, без изменения сюжета?
- как рисовать линии в сюжете, но рисовать точки/точки/квадраты в легенде?
1 ответ:
изменить ширину линии только в легенде, вы должны использовать функцию
guides()
и затем наcolour=
использоватьguide_legend()
Сoverride.aes=
и setsize=
. Это переопределит размер, используемый в графике, и будет использовать новое значение размера только для легенды.ggplot(iris,aes(Petal.Width,Petal.Length,color=Species))+geom_line()+theme_bw()+ guides(colour = guide_legend(override.aes = list(size=3)))
чтобы получить точки в легенде и линии в обходном пути графика будет добавить
geom_point(size=0)
чтобы убедиться, что точки невидимы, а затем вguides()
setlinetype=0
для удаления строк иsize=3
чтобы получить больше очков.ggplot(iris,aes(Petal.Width,Petal.Length,color=Species))+geom_line()+theme_bw()+ geom_point(size=0)+ guides(colour = guide_legend(override.aes = list(size=3,linetype=0)))