区分geom_point两组
distinguish geom_point by two groups
这是我目前得到的结果:
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')
我也想按Location来区分点,更具体地说,我想将每种颜色分为两种颜色,例如紫色为浅紫色和深紫色,以表示位置。
我该怎么办?
你至少有两个选择。一种是将颜色美感分配给数据框中模式和位置因素的交互,如下所示:
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')
两个结果:
这是我目前得到的结果:
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')
我也想按Location来区分点,更具体地说,我想将每种颜色分为两种颜色,例如紫色为浅紫色和深紫色,以表示位置。
我该怎么办?
你至少有两个选择。一种是将颜色美感分配给数据框中模式和位置因素的交互,如下所示:
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')
两个结果: