ggplot2:geom_point

时间:2016-09-23 12:53:53

标签: r ggplot2 border alpha

我想使用geom_point将我的数据绘制为点图。我的数据点是重叠的,所以我想使用抖动和透明度来提高可见性。现在我还想为每个数据点添加一个边框,使读者更容易看到每个数据点。但是,由于alpha,看起来我的数据点在它们周围有晕圈。这就是为什么我只想将alpha用于填充而alpha = 0用于边框的原因。但到目前为止,我还没有找到解决方案。我可以绘制两个geom_points,一个比另一个略大,在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")

期待您的建议。

干杯 安

3 个答案:

答案 0 :(得分:2)

这应该对你有用:

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))

让我知道

答案 1 :(得分:2)

这里提供的一种更简单的方法是使用geom_point指定alpha命令中的填充,因为您希望所有人都使用相同的alpha和颜色。另外,人们还可以“老式的”#34;使用两个额外的十六进制代码指定透明度的方法,例如#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)

答案 2 :(得分:1)

为了达到理想的情节,我将使用position_nudge函数。

首先,我创建一个微调矢量,其均匀概率分布与数据点的长度相同。这可以按照以下方式完成

set.seed(10)
nudgeWidth = 0.5
nudgeVec <- (runif(nrow(comp24))-0.5)*nudgeWidth

现在我使用上面的微调向量&#34; nudgeVec&#34;获得理想的情节

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

输出看起来像这样 Desired Plot