繁体   English   中英

ggplot2:geom_point的边框和填充使用不同的Alpha值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM