欢迎关注R语言数据分析指南
❝本节来介绍如何ggplot2来绘制正负分布的条形图,在之前展示案例的基础上进行了一些小的改动,下面通过1个案例来进行展示;数据及代码已经上传小编的VIP群,
❞有需要的观众老爷欢迎加入小编的VIP群,目前已经上传「公众号文档数据+代码约170余篇」,扫描文末尾二维码加小编微信「付费99元」后邀请进群,「由于群名额有限人满之后将不在添加新成员」,有需要的请尽早加入,早进早享受;如果对加群没兴趣的观众老爷可在文末找到获取数据的方式
加载R包
library(tidyverse)
library(grid)
library(ggtext)
导入数据
chocolate <- read_csv('chocolate.csv')
mean <- mean(chocolate$rating)
数据清洗
df <- chocolate %>%
group_by(company_location) %>%
summarise(n = n(),min_rating = min(rating),max_rating = max(rating),
avg_rating = mean(rating, na.rm = T)) %>%
mutate(company_location = fct_reorder(company_location, avg_rating)) %>%
filter(n > 3) %>%
mutate(rating_diff = avg_rating - mean) %>%
filter(abs(rating_diff) >0.05)
数据可视化
df %>%
ggplot() +
geom_col(aes(x = rating_diff, y = company_location, fill = rating_diff > 0),
size = 0.25, color = "white")+
geom_point(aes(x = rating_diff,y = company_location,
color=ifelse(rating_diff > 0,"#E11B4D","#8456BA")),size=5)+
geom_text(aes(x = ifelse(rating_diff > 0, -.005, .005),y = company_location,
label = company_location,
color=ifelse(rating_diff > 0,"#E11B4D","#8456BA"),
hjust = ifelse(rating_diff > 0, 1, 0)),size = 4)+
geom_vline(xintercept=0,size=1,color="grey40")+
scale_x_continuous(expand = expansion(add = c(0,.2)),
breaks = seq(-.4,.2, by = .2)) +
scale_y_discrete(expand = c(.025,.025))+
scale_fill_manual(values = c("TRUE" = "#E11B4D","FALSE" = "#8456BA"))+
scale_color_manual(values = c("#8456BA","#E11B4D"))+
coord_cartesian(clip = "off") +
theme_minimal() +
theme(panel.grid = element_blank(),
plot.background = element_rect(fill="Aliceblue",color="Aliceblue"),
axis.text.y = element_blank(),
axis.title = element_blank(),
legend.position = "none",
axis.text.x = element_text(face = "bold", size =rel(1), color = "black"))
数据获取
❝本节介绍到此结束,「有需要获取本篇数据的欢迎转发此文档到朋友圈,30分钟后公众号后台截图给小编」,添加小编微信时请备注来意以便高效处理,「当然更加推荐加入小编的VIP交流群」,绝让你体会到物超所值
❞
小编微信

关注下方公众号下回更新不迷路
往期推荐

