这是我到目前为止所得到的:
df<-data.frame(x=(1:100),
y=rnorm(100),
Mode=c(rep('Walk',25), rep('Bike',25), rep('Drive',25), rep('Train',25)),
Location=c(rep(c(rep('City',10), rep('Rural',15)),4)))
ggplot(df)+geom_point(aes(x=x, y=y, col=Mode))+
scale_color_brewer(palette='Set1')
我想通过位置区分点,更具体地说,我希望每种颜色分为两种颜色,例如,紫色为浅紫色和深紫色,以表示位置。
我该怎么办?
答案 0 :(得分:2)
您至少有两个选择。一种是将颜色美学分配给数据框中模式和位置因子的交互,如下所示:
ggplot(df) +
geom_point(aes(x=x, y=y, color=Mode:Location)) +
scale_color_manual(values = c('Red', 'Pink', 'Blue', 'LightBlue',
'Green', 'LightGreen', 'Black', 'Grey'))
使用这种方法,ggplot
期望找到的模式和位置的每个组合都有唯一的颜色值,并且每个组合与其余组合是唯一的。因此,要按颜色进行分组,您必须手动定义您喜欢的颜色。
另一个选项如评论中所述,并涉及将Alpha(透明度)美学指定给位置并将颜色美学设置为模式。这会自动给出您想要的颜色分组,但在我的脑海中创造出难以理解的传奇。
ggplot(df) +
geom_point(aes(x=x, y=y, color=Mode, alpha=Location)) +
scale_alpha_discrete(range = c(0.4, 1)) +
scale_color_brewer(palette = 'Set1')
两个结果: