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)更改线宽。 当数据点重叠时,这种方法特别有用。

Interesting Posts