ggplot中的控制点边界厚度
当使用ggplot时,我可以将shape
设置为21-25,以获得具有内部( fill
)和边框( col
)颜色的独立设置的形状,如下所示:
df <- data.frame(id=runif(12), x=1:12, y=runif(12)) ggplot(df, aes(x=x, y=y)) + geom_point(aes(fill=id, size=id), colour="black", shape=21)
但是,我无法弄清楚如何控制形状边框的厚度,或者将它们设置为绝对的或者作为一种审美的映射。 我注意到,如果我设置了一个lwd
值,它就会覆盖size
美感:
ggplot(df, aes(x=x, y=y)) + geom_point(aes(fill=id, size=id), colour="black", shape=21, lwd=2)
我如何控制边框的厚度?
从ggplot2的 2.0.0版本开始,有一个控制点边框厚度的参数。 从NEWS.md
文件中:
geom_point()获得控制形状21-25(#1133,@SeySayux)的边框宽度的笔画审美。 大小和行程是相加的,所以大小= 5和行程= 5的点将具有10mm的直径。 (#1142)
因此,现在正确的解决scheme是:
df <- data.frame(id=runif(12), x=1:12, y=runif(12)) ggplot(df, aes(x=x, y=y)) + geom_point(aes(fill=id, size=id), colour="black", shape=21, stroke = 2)
这感觉有点不好意思,但你可以添加一个“ 背景 ”点的大小设置审美映射加上一些小的常数来扩大点的边界点集。 玩常数来获得所需的边框宽度。
您还必须禁用尺寸图例以停止在图表上显示图例…
ggplot(df, aes(x=x, y=y)) + geom_point(aes(size=id+0.5), colour="black" , show_guide = FALSE )+ scale_size( guide = "none" )+ geom_point(aes(fill=id, size=id), colour="black", shape=21)
另一个解决scheme是在R中创build绘图,然后将其导出到.svg文件。 然后可以使用vectorgraphics编辑软件(例如Inkscape)更改线宽。 当数据点重叠时,这种方法特别有用。