本节来介绍如何使用ggforce包来自定义画线圈来绘制棒棒糖图,下面小编就通过一个案例来进行展示数据为随意构建无实际意义仅作图形展示用,希望各位观众老爷能够喜欢。数据+代码已经上传2023VIP群,加群的观众老爷请自行下载

library(tidyverse)
library(janitor)
library(ggtext)
library(ggforce)
library(ggfx)
library(colorspace)yarn <- read_csv("data.csv")pal <- tribble(~r, ~g, ~b,198, 114, 67,
220, 166, 146,180, 185, 163,129, 160, 149,30, 166, 179) %>%
mutate(pal = rgb(r, g, b, maxColorValue = 255)) %>%
pull(pal)
pal <- colorRampPalette(pal)(8)df_base <- yarn %>%
group_by(yarn_company_name) %>% # 按 yarn_company_name 分组
summarise(rating = mean(rating_average, na.rm = TRUE),n = n()) %>% # 计算平均评分和数量
arrange(desc(n)) %>% # 按数量降序排列
head(8) %>% # 选择前 8 条数据
ungroup() %>% # 取消分组
mutate(p = n/sum(n),x0 = 1:n()) # 计算百分比和 x 坐标
df_yarn <- map_dfr(1:nrow(df_base), ~{
tibble(
x = 3*df_base$p[.x]*sin(seq(0, 2*pi, length = 200)) + df_base$x0[.x], # 计算 x 坐标
y = 3*df_base$p[.x]*cos(seq(0, 2*pi, length = 200)) + df_base$rating[.x] - 3*df_base$p[.x], # 计算 y 坐标
id = runif(200),yarn_company_name = df_base$yarn_company_name[.x] # 生成随机 id 和 yarn_company_name
)}) %>%
mutate(y = -y) %>% # 反转 y 坐标
arrange(yarn_company_name, id) # 按 yarn_company_name 和 id 排序df_yarn %>%
ggplot(aes(x, y)) +
geom_rect(aes(xmin=0.5,xmax=8.5,ymin=-1.2,ymax = -1),fill = lighten("#d4a373", 0.2)) + # 绘制矩形背景
with_blur(geom_segment(aes(x = x0, xend = x0, y = -1, yend = -rating+0.2,
colour = yarn_company_name), df_base, size = 0.6),sigma = 3) + # 绘制模糊线段
with_blur(geom_bspline0(aes(colour = yarn_company_name),size=0.6),sigma=3) + # 绘制模糊曲线
geom_text(aes(x0, -rating-0.2, label = paste0(yarn_company_name, "\n\n\n",round(rating, 1), "|", n)),
df_base,size =4, colour = "black", lineheight = 0.3) + # 绘制文本标签
coord_cartesian(clip = "off") + # 设置坐标系
scale_colour_manual(values = pal,breaks = df_base$yarn_company_name) + # 设置颜色
scale_x_continuous(breaks = 1:8,labels = df_base$yarn_company_name) + # 设置 x 轴刻度
ylim(-5, -1) + # 设置 y 轴范围
theme_void() + # 设置空白主题
theme(
text = element_text(size =4, colour = "grey20"),
legend.position = "none",
plot.background = element_rect(fill ="white", colour = "grey20"),
plot.margin = margin(t=20,b=0,l=20,r=20)) # 设置主题样式
本节介绍到此结束;有需要学习R语言个性化数据可视化的朋友,欢迎到小编的淘宝店铺 R语言数据分析指南购买2023年度会员文档同步更新中售价149元,内容主要包括各种高分论文的图表分析复现以及一些个性化图表的绘制均包含数据+代码;按照往年数据小编年产出约在150+以上
购买后微信发小编订单截图即邀请进新的会员交流群,小编的文档为按年售卖,只包含当年度的除系列课程外的文档,有需要往年文档的朋友也可下单购买,需要了解更多信息的朋友欢迎交流咨询。


本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。