sjPlot :: plot_xtab标签错误的因子级别问题

问题描述 投票:0回答:1

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

cars %>% count(carb_cat)

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

我现在已经使用实际数据多次遇到这个问题,plot_xtab中没有一个似乎可以解决这个问题的论据。

enter image description here

r label bar-chart sjplot
1个回答
0
投票

似乎在最新版本的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")

enter image description here

             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
© www.soinside.com 2019 - 2024. All rights reserved.