我想绘制一个能够在散点图中捕捉一维点密度的背景。这与边缘密度图或毛毯图具有类似的作用。我有一种不太优雅的方法来做到这一点,我想知道是否有内置功能可以用来产生这种类型的图。
主要存在几个问题:
- 边界处Alpha重叠导致低分辨率时出现带状。 - 主要目标,寻找一个可以绘制填充特定颜色的漂亮连续带的几何或其他解决方案。类似于geom_density_2d(),但统计数据仅从X轴绘制。
- "背景"未覆盖扩展区域,可以使用coord_cartesian(expand = FALSE),但希望覆盖常规边距。 - 不是很重要,这是一个美好的愿望,但不是必需的。
- 设置
scale_fill
"消耗"了绘图的选项,不允许单独为点自身设置。 - 这可能不容易实现,对于层的独立调色板似乎是ggplot2的基本问题。
data(iris)
dns <- density(iris$Sepal.Length)
dns_df <- tibble(
x = dns$x,
density = dns$y
)%>%
mutate(
start = x - mean(diff(x))/2,
end = x + mean(diff(x))/2
)
ggplot() +
geom_rect(
data = dns_df,
aes(xmin = start, xmax = end, fill = density),
ymin = min(iris$Sepal.Width),
ymax = max(iris$Sepal.Width),
alpha = 0.5) +
scale_fill_viridis_c(option = "A") +
geom_point(data = iris, aes(x = Sepal.Length, y = Sepal.Width)) +
geom_rug(data = iris, aes(x = Sepal.Length))
geom_density_2d()
,这是我没有想到的。 - shians