我无法弄清楚如何创建特定于每个方面的alpha值。我的一些观察结果几乎消失了(值太少而且我将alpha设置得太低)或者它们形成了一个大blob(其中有很多值并且我将alpha设置得太高)。
diamonds
的虚拟示例:
library(tidyverse)
ggplot(data = diamonds,
mapping = aes(x = price, y = carat)) +
geom_point(alpha = 0.1) +
facet_grid(cut ~ clarity) +
scale_alpha_continuous(range = c(0,1))
......在有很多价值观的地方工作正常,但很难在右上角找出任何东西......另类:
ggplot(data = diamonds,
mapping = aes(x = price, y = carat)) +
geom_point(alpha = 0.1) +
facet_grid(cut ~ clarity) +
scale_alpha_continuous(range = c(0,1))
...更容易在右上方拾取点,但人口密度更高的组合变得更加坚实。
我想以某种方式根据观察次数设置alpha:
d0 <- diamonds %>%
group_by(cut, clarity) %>%
summarise(n = n())
d0
# A tibble: 40 x 3
# Groups: cut [?]
cut clarity n
<ord> <ord> <int>
1 Fair I1 210
2 Fair SI2 466
3 Fair SI1 408
4 Fair VS2 261
5 Fair VS1 170
6 Fair VVS2 69
7 Fair VVS1 17
8 Fair IF 9
9 Good I1 96
10 Good SI2 1081
# ... with 30 more rows
但是当涉及到如何实现这一点时,我感到困惑......我的尝试似乎打破了人口较多的组合......
ggplot(data = diamonds %>%
group_by(cut, clarity) %>%
mutate(n = n()),
mapping = aes(x = price, y = carat, alpha = 1/n)) +
geom_point() +
facet_grid(cut ~ clarity) +
scale_alpha_continuous(range = c(0,1))
注意:我不太确定alpha这种类型的facet缩放对于这个虚拟数据是完全合理的,但我有充分的理由用我想要可视化的实际(加权)数据来做这个。