r - 删除 stat_density_2d(geom = 'point') 中密度为 0(无数据)的点
问题描述
我有两个数据框,一个我想使用“光栅”几何图形制作 stat_density_2d 图,一个我想使用“点”几何图形。对于点几何,我想删除任何没有数据的点,以点大小为 0 来衡量。
以下是我的代码:
library(tidyverse)
set.seed(1)
#tibble for raster density plot
df <- tibble(x = runif(1000000, min = -7, max = 5),
y = runif(1000000, min = 0, max = 1000))
#tibble for point density plot
df2 <- tibble(x = runif(20000, min = -2, max = 2),
y = runif(20000, min = 0, max = 500))
#create the density plot
p1 <- ggplot(NULL, aes(x=x, y=y) ) +
stat_density_2d(data = df, aes(fill = stat(density)), geom = "raster", contour = FALSE) +
scale_fill_gradient(low="transparent", high="red") +
stat_density_2d(data = df2, geom = "point", aes(size = ..density..), n = 40, contour = FALSE) +
theme_bw() +
theme(text=element_text(size=18)) +
ylim(0, 1000) + xlim(-7, 5)
p1
返回:
但是在点最小的地方(在 df2 tibble 中指定的范围之外),我不希望显示任何密度点。反正有没有删除这些?
解决方案
这是一个 hack,虽然我不知道它对数据差异有多强大。
蓝光:添加scale_radius(range=c(-1,6))
。
我大量减少了您的数据,因此渲染不需要 5 分钟。
set.seed(1)
df <- tibble(x = runif(1000, min = -7, max = 5),
y = runif(1000, min = 0, max = 1000))
df2 <- tibble(x = runif(20, min = -2, max = 2),
y = runif(20, min = 0, max = 500))
四个地块:
- 您的代码(我的数据),没有其他变化;
scale_radius()
;scale_radius(range = c(-0.332088004, 6))
; 和scale_radius(range = c(-1, 6))
.
这肯定是一个 hack,我不知道如何找到更精确的方法来过滤掉特定级别。
修改后的代码:
p1 <- ggplot(NULL, aes(x=x, y=y) ) +
stat_density_2d(data = df, aes(fill = stat(density)), geom = "raster", contour = FALSE) +
scale_fill_gradient(low="transparent", high="red") +
stat_density_2d(data = df2, geom = "point", aes(size = ..density..), n = 40, contour = FALSE) +
theme_bw() +
# scale_radius() +
# scale_radius(range = c(-0.332088004, 6)) +
scale_radius(range = c(-1, 6)) +
theme(text=element_text(size=18)) +
ylim(0, 1000) + xlim(-7, 5)
推荐阅读
- swift - 如何让 SwiftUI Picker 在子视图中工作?(变灰)
- ios - 在 Windows 上使用 Apple 的传输器
- r - 因子字段状态的 predict() 对象错误
- ios - 如果 translatesAutoresizingMaskIntoConstraints = false,则滚动视图不起作用
- php - 数据库没有结果
- python - TypeError:视图函数没有返回有效响应。该函数要么返回 None 要么在没有 return 语句的情况下结束
- console - Magneto 2 自定义控制台命令 undefined nanespace
- go - Gorilla websockets,一个事件中的多个消息
- java - Java中的子类和超类
- bash - 覆盖“选择”内置