如何根据rank
列为点的边界着色?我还想为sex
分配不同的形状。
library(tidyverse)
data(Salaries, package="carData")
col <- grDevices::colorRampPalette(c("#ff816f","#f1f1f1","#004252"))(1000)
ggplot(Salaries, aes(x=yrs.since.phd, y=salary, color=rank, shape=sex) ) +
geom_bin2d(alpha=0.5) +
theme_bw() +
scale_fill_gradientn(colors=col, na.value=NA, guide="legend")
电流图:
1条答案
按热度按时间sqougxex1#
这里有一种方法,可以对代码进行最小的更改。我使用
stat_bin2d
,这样我就可以将平铺几何体从平铺切换为点,然后将点形状更改为21,这是具有单独颜色和填充美学的形状之一。然后我可以将fillMap到..count..
,它由stat_bin2d
计算。(我注意到这种方法的一个主要缺点是,许多箱子有多种性别/排名组合,你要求在同一个x/y位置显示,导致过度绘制和隐藏大部分数据。选择较少的变量一次显示。仅仅因为你可以显示5并不意味着这是一个好主意......)
我可能会采用不同的方法来更好地控制装箱和美观,通过使用dplyr预先计算计数并将其输入ggplot 2。
根本的问题是你想表现得太多了。这里要注意的是,大多数位置都有多个等级和性别的组合(最多6个),我试图在位置上使用抖动来腾出一些空间。我强烈建议一次只关注3个变量-- 5个变量在视觉上很嘈杂,几乎不可能解释。