@ ответ teunbrand наверняка более элегантный.
Однако, когда вы снова посмотрите на ваш вопрос, он только что нашел другой обходной путь, который использует дополнительный слой для создания другого руководства, а затем вручную настраивает это руководство для повторной выборки. ширина штриха.
Обратите внимание, что вы можете использовать theme(legend.key.size=unit(2, 'lines'))
, чтобы легенда соответствовала размеру штриха.
sizes <- expand.grid(size = (0:3) * 2, stroke = (0:3) * 2)
ggplot(aes(x=size, y=stroke, size = size, stroke = stroke, color=factor(stroke)), data=sizes) +
geom_abline(slope = -1, intercept = 6, colour = "white", size = 6) +
geom_point(shape = 21, fill = "red") + # to create one layer that builds a legend for 'color'
geom_point(shape = 21, fill = "red", color='black') +
theme(legend.key.size=unit(2, 'lines')) +
scale_size(range=c(2,12),breaks=c(0,1,2),labels=c(">=0",">=1",">=2"),guide='legend') +
guides(color=guide_legend(override.aes = list(stroke=c(0, 2, 4, 6), color='black'), title='stroke')) # fix the color guide to show stroke width
![enter image description here](https://i.stack.imgur.com/cApbk.png)