箱线图(ggplot2)未按预期工作

Posted

技术标签:

【中文标题】箱线图(ggplot2)未按预期工作【英文标题】:Boxplot (ggplot2) not working as expected 【发布时间】:2022-01-12 04:08:47 【问题描述】:

我正在尝试绘制一个简单的箱线图,其中我为 15 岁“Cadernos”(15 次调查,调查 A、B、C .. 到 O)的受访者绘制了 15 个箱线图。但这并没有按预期工作。 我已经尝试将位置切换到“Cadernos”(调查)和“Idade”(年龄)变量。 任何想法?我期望的是纵轴上有 15 个箱线图。

我使用的代码如下:

library(ggplot2)

select_base %>% 
  ggplot(aes(Idade,Caderno)) +
  geom_boxplot()  

我得到的情节如下:

【问题讨论】:

我不认为代码生成了情节:x 和 y 变量在代码中与情节相反。 另外看起来Idade 是字符或因子类型的变量,而不是数字。 str(select_base) 向您展示了什么? @neilfws 你说得对,生成该图的代码切换了这些变量,我失误了。关于变量的类型,str(select_base) 返回:'data.frame': 2876 obs。 2 个变量: $ Caderno: chr "N" "N" "M" "M" ... $ Idade : chr "15" "15" "15" "15" ... 所以,是的,它们是字符,那会影响代码吗?提前谢谢 是的,您需要 y 变量为数字类型。您也许可以使用as.numeric() 转换该列,但最好首先弄清楚为什么 R 将其作为字符读入 - 例如,数据文件是否包含该列中的数字以外的内容。跨度> @neilfws 谢谢! 【参考方案1】:

我不确定您是否提供了数据,但您可以尝试

select_base %>% 
  ggplot(aes(x = Caderno, y = Idade, group = Caderno)) +
  geom_boxplot()  

例如使用数据dummy 会如下图所示

dummy <- data.frame(
  x = rnorm(50),
  y = rep(c("a","b","c","d","e"),10)
)
dummy %>%
  ggplot(aes(x = y,y = x,  group = y)) +
  geom_boxplot()

【讨论】:

以上是关于箱线图(ggplot2)未按预期工作的主要内容,如果未能解决你的问题,请参考以下文章

R 的问题:使用 ggplot2 更改多个箱线图的标题

用一条线连接箱线图(ggplot2)

用ggplot2画箱线图叠加图层后变成一个很奇怪的样子,求救求救?

在 ggplot2 中,箱线图线的末端代表啥?

使用 ggplot2 组合箱线图和直方图

ggplot2 不会将图例添加到具有多个层的箱线图