当使用ggplot时,我可以设置shape为21-25来获取具有internal(fill)和border(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)
Run Code Online (Sandbox Code Playgroud)

但是,我无法弄清楚如何控制形状边框的厚度,无论是绝对设置还是美学映射.我注意到,如果我设置一个lwd值,它会覆盖size美学:
ggplot(df, aes(x=x, y=y)) +
geom_point(aes(fill=id, size=id), colour="black", shape=21, lwd=2)
Run Code Online (Sandbox Code Playgroud)

如何控制边框厚度?
我正在使用ggplot为所有点绘制具有恒定透明度值的许多点.
我发现圆形点的填充比其单独的边界更加透明,因此边界明显比填充更明亮(我在黑暗的背景上绘制光圈).
library(ggplot2)
set.seed(123)
data <- data.frame( x = sample(1:100,2000, replace=T),
y = sample(1:100,2000, replace=T) )
ggplot(data, aes(x,y)) +
geom_point(alpha=0.2, color="dodgerblue", fill="dodgerblue", size=4) +
theme(panel.background = element_rect(fill = 'black', colour = 'black'))
Run Code Online (Sandbox Code Playgroud)
我不确定为什么会这样做,所以关于为什么会发生这种情况的信息会很棒.
可能的解决方案是使边框和填充相同的透明度,或使边框100%透明(设置边框,比如背景颜色,当点重叠时会破坏视觉效果).我不知道怎么做其中任何一个.
*以下讨论后添加了编辑*
在RStudio查看器中查看绘图或保存的PNG时会出现此问题.查看已保存的PDF时不会显示.然而,我的真实数据集很大,矢量图形在绘制大量点时效率低,所以我想要一个替代解决方案!
有没有办法来改变alpha用geom_sf?此示例来自 中的示例?geom_sf。我尝试添加alpha=.2但它似乎忽略了这种美学,尽管它alpha是geom_line. 它不会忽略fill- 在这个例子中的alpha NA。
library(sf)
#> Linking to GEOS 3.6.1, GDAL 2.1.3, proj.4 4.9.3
library(ggplot2)
nc <- sf::st_read(system.file("shape/nc.shp", package = "sf"), quiet = TRUE)
nc_3857 <- sf::st_transform(nc, "+init=epsg:3857")
ggplot() + geom_sf(data = nc) +
geom_sf(data = nc_3857, colour = "red", fill = NA, alpha = 0.2)
Run Code Online (Sandbox Code Playgroud) 我想制作一个散点图,其中每个点都有一个球体。点及其球体都根据某些列值着色。
一个显示我想要的最小示例:
library(ggplot2)
library(vcd) # only needed for example dataset
ggplot(Arthritis, aes(x = ID, y = Age)) +
geom_point(aes(color=Sex), size=10, alpha=.3) +
geom_point(aes(color=Treatment), size=3)
Run Code Online (Sandbox Code Playgroud)
这个“解决方案”的问题是使用geom_point两层似乎会弄乱图例。我想只有geom_point一层并使用也添加笔划的形状也会更有意义,所以像这样:
ggplot(Arthritis, aes(x = ID, y = Age)) +
geom_point(aes(color=Sex, fill=Treatment), shape=21, size=5, stroke=5)
Run Code Online (Sandbox Code Playgroud)
这里的图例更有意义,但是,我不知道如何使笔划透明。这很重要,因为当点重叠时,您将看不到任何东西。
像这样的答案并不能解决我的问题,因为它们使用恒定颜色,因此可以使用函数alpha. 但是,我无法弄清楚是否以及如何将其与取决于数据的颜色一起使用。
TL;DR:如何绘制geom_points具有纯色和透明笔触但不是恒定颜色的图像?