箱线图(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)未按预期工作的主要内容,如果未能解决你的问题,请参考以下文章