[英]ggplot2: different alpha values for border and filling of geom_point
我想使用geom_point将数据绘制为点图。 我的数据点重叠,因此我想使用抖动和透明度来增加可见性。 现在,我还要在每个数据点上添加边框,以使读者更容易看到每个数据点。 但是,由于存在Alpha,我的数据点似乎周围有光晕。 这就是为什么我只想对填充使用alpha,对边框使用alpha = 0的原因。 但是到目前为止,我还没有找到解决方案。 我可以绘制两个geom_point,一个比另一个大,以在每个点周围创建一个带有alpha = 0的边界。 但是因为我需要抖动,所以相同的数据点不会相互重叠。 有谁知道如何解决这个问题?
这是我的代码:
ggplot(data=comp24, aes(x=spatial, y=lnfit, colour=spatial, fill=spatial, shape=spatial, backgroundColor="white", na.rm=T))+
geom_point(position=position_jitter(w=0.5), size=1.75, alpha=0.2, stroke=0.3)+
scale_colour_manual(name="spatial structure", values = c("black", "black", "black"))+
scale_fill_manual(name="spatial structure", values = c("black","black", "black"))
和一些数据:
spatial focal competitor lnfit
low pco pch -1.79175947
low pco pch -1.49165488
low pco pch -0.98082925
low pco pch -1.97716269
intermediate pco pch -0.84729786
intermediate pco pch -0.48379695
intermediate pco pch -0.64574494
intermediate pco pch -0.51082562
intermediate pco pch 1.43693809
high pco pch 0.89608802
high pco pch 0.04879016
high pco pch -2.20625398
high pco pch 0.31003898
high pco pch -0.01694956
这是图形的详细信息,显示了我正在谈论的光晕。 我猜它来自填充和边框重叠。 这就是为什么我在灰色区域中看到这条垂线。 不幸的是,更改笔划值只会增加光晕效果。
我使用以下命令将图形另存为.tif:
tiff('C:/_..._..._.tif', bg = "white", res = 1600, width = 115, height = 160, units = "mm", compression="lzw")
期待您的建议。
干杯安妮
这应该为您工作:
ggplot(data=comp24, aes(x=spatial, y=lnfit, colour=spatial, fill=spatial, shape=spatial, backgroundColor="white", na.rm=T))+
geom_point(position=position_jitter(w=0.5), size=1.75, stroke=0.3)+
scale_colour_manual(name="spatial structure", values = c("black", "black", "black"))+
scale_fill_manual(name="spatial structure", values =alpha(c("black","black", "black"),0.2))
让我知道
一种更简单的方法(可在此处使用,因为您希望所有人都具有相同的Alpha和颜色)是使用alpha
来指定geom_point
命令中的填充。 或者,也可以使用“老式”的方法通过两个附加的十六进制代码(例如#00000044
来指定透明度。
ggplot(data=comp24, aes(x=spatial, y=lnfit, shape=spatial)) +
geom_point(position=position_jitter(width=0.5), size=1.75,
fill=alpha("black", 0.2), stroke=0.3)
为了获得所需的绘图,我将使用position_nudge
函数。
首先,我创建一个微调矢量,该矢量具有与数据点相同长度的均匀概率分布。 可以按照以下步骤完成
set.seed(10)
nudgeWidth = 0.5
nudgeVec <- (runif(nrow(comp24))-0.5)*nudgeWidth
现在,我使用上面的微移矢量“ nudgeVec
”来获得所需的图
plot1 <- ggplot(data=comp24, aes(x=spatial, y=lnfit, backgroundColor="white", na.rm=T))
plot1 <- plot1 + geom_point(position=position_nudge(x = nudgeVec),size=10.75,aes(alpha=0.2, stroke=0.5,shape=(as.integer(comp24$spatial)+14)))
plot1 <- plot1 + scale_colour_identity()
plot1 <- plot1 + scale_shape_identity()
plot1 <- plot1 + geom_point(position = position_nudge(x = nudgeVec),size=10.75,aes(alpha=1, stroke=0.5, colour="black",shape=(as.integer(spatial)-1)))
plot1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.