根据每个方面的观察数量,在ggplot2中缩放alpha

时间:2017-10-19 14:55:13

标签: r ggplot2 visualization alpha-transparency

我无法弄清楚如何创建特定于每个方面的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)) 

enter image description here

......在有很多价值观的地方工作正常,但很难在右上角找出任何东西......另类:

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

enter image description here

...更容易在右上方拾取点,但人口密度更高的组合变得更加坚实。

我想以某种方式根据观察次数设置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)) 

enter image description here

注意:我不太确定alpha这种类型的facet缩放对于这个虚拟数据是完全合理的,但我有充分的理由用我想要可视化的实际(加权)数据来做这个。

0 个答案:

没有答案