R ggplot2中的比例alpha取决于每个方面的观察数量
我很难弄清楚如何创建特定于每个方面的alpha值。要么我的一些观察结果几乎消失了(值太少,我将alpha设置得太低),要么它们形成一个大斑点(值太多,我将alpha设置得太高) 带有R ggplot2中的比例alpha取决于每个方面的观察数量,r,ggplot2,visualization,alpha-transparency,R,Ggplot2,Visualization,Alpha Transparency,我很难弄清楚如何创建特定于每个方面的alpha值。要么我的一些观察结果几乎消失了(值太少,我将alpha设置得太低),要么它们形成一个大斑点(值太多,我将alpha设置得太高) 带有菱形的虚拟示例: library(tidyverse) ggplot(data = diamonds, mapping = aes(x = price, y = carat)) + geom_point(alpha = 0.1) + facet_grid(cut ~ clarity) + s
菱形的虚拟示例
:
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
注意:我不太确定alpha的这种刻面缩放对于这个虚拟数据是否完全有意义,但我有充分的理由用我试图可视化的实际(加权)数据来做这件事。可以尝试
diamonds%>%add_count(cut,clearity)%%>%mutate(alpha=scales::rescale(n,c(.2,.01))
。。。然后+geom_点(aes(alpha=I(alpha)))
。如果您确实为每个面设置了不同的alpha标度,那么您的绘图将具有误导性。也许可以尝试使用几何平滑覆盖的stat\u bin\u hex
。@Gregor我正在使用一些虚拟数据。。。看到最后一个了吗sentence@Gregor我不认为这会产生误导。移除比例后,我将此目标(无论如何,我为什么要这样做)视为允许查看者查看点的密度/簇。对于非理想alpha,它太饱和(只是看起来很黑)或者几乎看不见。我看到alpha被缩放到不同的数字,以让观众一致地理解不同百分比的数据在哪里,由每组“黑暗”表示。@Hendy误导性是在旁观者的眼中-如果不看到上下文和实际数据,很难判断。也许“可能误导”太强了,而“可能误导”更好——但如果某个特定的暗值表示面X上的“10点在这里”,面Y上的“100点在这里”,而无法分辨差异,则可能会误导。
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))