【问题标题】:Problem with sjPlot::plot_xtab mislabelling factor levelssjPlot::plot_xtab 错误标记因子水平的问题
【发布时间】:2020-04-14 23:38:26
【问题描述】:

sjPlot::plot_xtab 是一个有用的工具,可以快速生成带有计数和百分比标签的分组条形图。不过,我一直遇到一个非常烦人的问题。 plot_xtab 正在重新排序和错误标记我感兴趣的因素的水平。似乎正在发生的事情是它按词汇顺序对级别进行排序,但随后将它们与实际因子标签按标签顺序错误地标记。这当然是一个严重的问题。这是一个可重现的示例:

library(tidyverse)
library(forcats)
library(gtools)
library(sjPlot)
data("mtcars")

cars <- as_tibble(mtcars) %>% 
  mutate(carb_cat=case_when(carb <3~"Low", carb==3 | carb ==4~"Med", carb>4~"High"), 
    carb_cat=fct_relevel(carb_cat, "Low", "Med", "High"))

unique(cars$carb_cat)

cars$mpg_3 <- quantcut(cars$mpg, q=3)

plot_xtab(cars$mpg_3, cars$carb_cat, show.total = F)

当我用cars$mpg_3 绘制cars$carb_cat 时,plot_xtab 重新排序并错误标记了我的因子水平。如果您将条形图上的计数与下面的频率表进行比较,您会注意到实际水平“高”在条形图和图例中标记为“低”,“中”标记为“高”,“低” ”被标记为“中”。

cars %&gt;% count(carb_cat)

  carb_cat     n
  <fct>    <int>
1 Low         17
2 Med         13
3 High         2

我现在使用真实数据多次遇到这个问题,我在plot_xtab 中看到的任何论点似乎都没有解决这个问题。

【问题讨论】:

  • 我会将此问题报告给软件包作者。

标签: r label bar-chart sjplot


【解决方案1】:

似乎在最新版本的 sjPlot(自 2.8.2 起)中引入了一个错误。在 2.8.0 版中,我得到了正确的图表:

library(tidyverse)
library(forcats)
library(gtools)
library(sjPlot)

data(mtcars)

cars <- mtcars %>% 
  mutate(carb_cat=case_when(carb <3~"Low", 
                            carb==3 | carb ==4~"Med", 
                            carb>4~"High"), 
         carb_cat=fct_relevel(carb_cat, "Low", "Med", "High"))

cars$mpg_3 <- quantcut(cars$mpg, q=3)

plot_xtab(cars$mpg_3, cars$carb_cat, show.total = F) +
   ggtitle("sjPlot version 2.8.0")

             carb_cat
mpg_3         Low Med High
  [10.4,16.7]   2   8    1
  (16.7,21.4]   5   5    1
  (21.4,33.9]  10   0    0

【讨论】:

  • 谢谢。我已经报告了这个错误并在此期间降级到 2.8.0。
猜你喜欢
  • 2022-11-02
  • 1970-01-01
  • 2018-08-17
  • 1970-01-01
  • 1970-01-01
  • 2011-08-17
  • 1970-01-01
  • 2022-10-07
相关资源
最近更新 更多