ggplot指定样式不生效求助:R新手遇绘图颜色异常问题
解决ggplot样式不生效的问题
嘿,我来帮你搞定这个颜色和大小没生效的问题!
核心原因
你把color="black"、size=1这类固定样式参数放进了aes()函数里——但aes()的作用是把数据变量映射到美学属性,不是用来设置固定样式的。当你在aes()里写字符串(比如color="yellow")时,ggplot会把这个字符串当成一个离散的分类变量,自动给它分配默认调色板里的颜色(就是你看到的红、蓝、绿),完全忽略你写的具体颜色值。
修正后的代码
只需要把固定的color和size移到aes()外面,作为对应图层的参数就行,修改后的代码如下:
worst_death <- df_clean %>% group_by(event_cat) %>% summarise(Deaths = sum(FATALITIES), Injuries = sum(INJURIES)) %>% ggplot() + # 把color从aes里移出来,作为geom_segment的参数 geom_segment(aes(x=reorder(event_cat, Injuries), xend=reorder(event_cat, Injuries), y=Deaths, yend=Injuries), color="black") + # size和color都移到aes外,直接设置固定样式 geom_point(aes(x=reorder(event_cat, Injuries), y=Deaths), color="yellow", size=1) + geom_point(aes(x=reorder(event_cat, Injuries), y=Injuries), color="white", size=1) + coord_flip() + theme_ipsum() + theme(legend.position = "none") + xlab("Event Type") + ylab("Human Impact") worst_death
小提示
记住一个简单的规则:aes()里只放那些和数据列关联的映射(比如x对应event_cat,y对应Deaths),而固定不变的样式(比如统一的颜色、大小、线宽)直接放在图层函数(比如geom_segment()、geom_point())的参数里就好,这样ggplot就不会把它们当成数据变量来处理啦。
内容的提问来源于stack exchange,提问作者aStarIsCorn
相关产品推荐
相关产品推荐

