如何用R语言ggplot2画小提琴图展示库里哈登詹姆斯微少爷命中率

发布时间:2021-11-22 15:42:57 作者:柒染
来源:亿速云 阅读:237
# 如何用R语言ggplot2画小提琴图展示库里哈登詹姆斯威少爷命中率

## 引言
在篮球数据分析中,可视化球员的投篮命中率分布能直观反映其得分稳定性。本文将通过R语言的`ggplot2`包,绘制斯蒂芬·库里、詹姆斯·哈登、勒布朗·詹姆斯和拉塞尔·威斯布鲁克四位球星的小提琴图(Violin Plot),对比他们的投篮命中率分布特征。

---

## 数据准备
首先需要构建包含球员姓名(`player`)和命中率(`fg_percent`)的模拟数据集。假设我们从NBA官网获取了2022-23赛季的投篮数据:

```r
library(tidyverse)

# 模拟数据生成
set.seed(123)
n <- 100  # 每位球员模拟100场比赛数据

player_data <- tibble(
  player = rep(c("Stephen Curry", "James Harden", "LeBron James", "Russell Westbrook"), each = n),
  fg_percent = c(
    rnorm(n, mean = 48, sd = 8),    # 库里命中率均值48%,标准差8%
    rnorm(n, mean = 44, sd = 10),   # 哈登
    rnorm(n, mean = 50, sd = 6),    # 詹姆斯
    rnorm(n, mean = 43, sd = 12)    # 威少
  ) %>% pmax(30) %>% pmin(70)       # 限制命中率在30%-70%之间
)

基础小提琴图绘制

使用geom_violin()绘制基础图形,添加箱线图显示中位数和四分位数:

ggplot(player_data, aes(x = player, y = fg_percent, fill = player)) +
  geom_violin(trim = FALSE, alpha = 0.7) +
  geom_boxplot(width = 0.1, fill = "white", outlier.shape = NA) +
  labs(
    title = "四位球星投篮命中率分布对比",
    x = "球员",
    y = "命中率 (%)",
    fill = "球员"
  ) +
  theme_minimal()

如何用R语言ggplot2画小提琴图展示库里哈登詹姆斯微少爷命中率
图示:小提琴宽度代表数据密度,箱线图显示统计量


进阶美化技巧

1. 添加数据点

使用geom_jitter()展示原始数据分布:

ggplot(player_data, aes(x = player, y = fg_percent)) +
  geom_violin(aes(fill = player), alpha = 0.5) +
  geom_jitter(width = 0.1, size = 1.5, alpha = 0.3) +
  scale_fill_brewer(palette = "Set2")

2. 分面显示

按球员拆分到不同面板:

ggplot(player_data, aes(y = fg_percent, fill = player)) +
  geom_violin() +
  facet_wrap(~player, ncol = 2) +
  theme(legend.position = "none")

3. 密度曲线叠加

ggplot(player_data, aes(x = fg_percent, fill = player)) +
  geom_density(alpha = 0.5) +
  facet_grid(player~.)

关键解读点

通过图形可观察到: 1. 勒布朗·詹姆斯的命中率分布最集中(标准差最小),稳定性最佳 2. 威斯布鲁克的分布最分散,存在较多低命中率场次 3. 库里的右偏分布显示其常有超高命中率爆发


完整代码

library(ggplot2)
library(ggridges)

final_plot <- ggplot(player_data, aes(x = player, y = fg_percent, fill = player)) +
  geom_violin(scale = "width", trim = FALSE) +
  geom_boxplot(width = 0.15, fill = "white") +
  scale_fill_manual(values = c("#FFA500", "#6F8FAF", "#552583", "#702F8A")) +
  labs(
    title = "NBA四位球星命中率分布对比(2022-23赛季模拟数据)",
    subtitle = "小提琴图展示密度分布,箱线图标注四分位数",
    caption = "数据来源: 模拟数据 | 可视化: ggplot2"
  ) +
  theme_bw() +
  theme(axis.text.x = element_text(angle = 15, hjust = 1))

ggsave("nba_violin_plot.png", final_plot, width = 10, height = 6, dpi = 300)

结语

小提琴图完美结合了箱线图的统计量和核密度估计的分布特征,特别适合展示篮球运动员的状态波动。读者可通过修改aes()中的colorscale_fill参数进一步定制图形风格。 “`

注:实际应用中请替换为真实NBA数据,本文使用模拟数据仅作演示。

推荐阅读:
  1. 怎么在R语言中使用ggplot2画图
  2. 如何用R语言画森林图展示Logistic回归分析的结果

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

r语言 ggplot2

上一篇:汇编的寻址方式与C语言中的指针相通吗

下一篇:c语言怎么实现含递归清场版扫雷游戏

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》