统计表格 + 可视化 ,这个超强绘图技巧值得一看!!

如何将社会科学(social sciences) 中常用统计分析结果,如:简单和交叉列表频率(simple and cross tabulated frequencies)、直方图(histograms)、箱线图(box plots)、(广义)线性模型((generalized) linear models)、混合效应模型(mixed effects models)、PCA和相关矩阵(PCA and correlation matrices)、聚类分析(cluster analyses) 、李克特量表(Likert scales) 等 有效的用可视化的方式表现出来?今天,小编就介绍一个非常优秀的可视化工具-R-sjPlot,接下来,就跟着小编一起来感受下这个包的魅力吧~~今天这篇推文的主要内容如下:

  • R-sjPlot包简单介绍

  • R-sjPlot包实例演示

R-sjPlot包简单介绍

R-sjPlot包作为一个优秀的R第三方包,其不仅可以绘制统计分析结果表格,而且还可以可视化统计模型结果,主要绘图函数如下:

  • 绘制回归模型结果(部分):

    • plot_model()、plot_models()、plot_kfold_cv()

  • 绘制描述性统计量(部分):

    • plot_frq():绘制变量的频率。

    • plot_gpt():绘制分组比例表。

    • plot_likert():将李克特量表绘制为居中的堆叠条形图。

    • plot_stackfrq():绘制堆积的比例条。

    • sjp.aov1():绘制单向方差分析表。

更多其他绘图函数和参数,可参考:R-sjPlot包[1]

R-sjPlot包实例演示

这一部分小编选择几个常用的可视化结果进行展示,如下:

「样例一」:plot_model()

library(tidyverse)
library(ggtext)
library(hrbrthemes)
library(sjPlot)
library(sjlabelled)
library(sjmisc)

# 构建数据
data(efc)
y <- ifelse(efc$neg_c_7 < median(na.omit(efc$neg_c_7)), 0, 1)
# create data frame for fitting model
df <- data.frame(
  y = to_factor(y),
  sex = to_factor(efc$c161sex),
  dep = to_factor(efc$e42dep),
  barthel = efc$barthtot,
  education = to_factor(efc$c172code)
)
# set variable label for response
set_label(df$y) <- "High Negative Impact"
# fit model
m1 <- glm(y ~., data = df, family = binomial(link = "logit"))
#可视化绘制
plot01 <- plot_model(m1,vline.color = "red",show.values = TRUE, value.offset = .3) + 
  labs(
    title = "Example of <span style='color:#D20F26'>sjPlot::plot_model function</span>",
    subtitle = "processed charts with <span style='color:#1A73E8'>plot_model()</span>",
    caption = "Visualization by <span style='color:#0057FF'>DataCharm</span>") +
  hrbrthemes::theme_ipsum(base_family = "Roboto Condensed") +
  theme(
    plot.title = element_markdown(hjust = 0,vjust = .5,color = "black",
                                  size = 20, margin = margin(t = 1, b = 12)),
    plot.subtitle = element_markdown(hjust = 0,vjust = .5,size=15),
    plot.caption = element_markdown(hjust = 1,face = 'bold',size = 12))
020c43757c988626d5bed58f662b93b2.png
Example01 Of plot_model Results

当然,你还可以调整可视化结果外观:

plot02 <- plot_model(
  m1, 
  colors = "Accent", 
  show.values = TRUE,
  value.offset = .4,
  value.size = 4,
  dot.size = 3,
  line.size = 1.5,
  vline.color = "#BC3C28",
  width = 1.5
) +
labs(
    title = "Example of <span style='color:#D20F26'>sjPlot::plot_model function</span>",
    subtitle = "processed charts with <span style='color:#1A73E8'>plot_model()</span>",
    caption = "Visualization by <span style='color:#0057FF'>DataCharm</span>") +
  hrbrthemes::theme_ipsum(base_family = "Roboto Condensed") +
  theme(
    plot.title = element_markdown(hjust = 0,vjust = .5,color = "black",
                                  size = 20, margin = margin(t = 1, b = 12)),
    plot.subtitle = element_markdown(hjust = 0,vjust = .5,size=15),
    plot.caption = element_markdown(hjust = 1,face = 'bold',size = 12))
45e4a8c1b7e15dc3af947c5814548115.png
Example02 Of plot_model Results

「样例二」:plot_kfold_cv()

plot03 <- plot_kfold_cv(mtcars, mpg ~.) +
  labs(
    title = "Example of <span style='color:#D20F26'>sjPlot::plot_kfold_cv function</span>",
    subtitle = "processed charts with <span style='color:#1A73E8'>plot_kfold_cv()</span>",
    caption = "Visualization by <span style='color:#0057FF'>DataCharm</span>") +
  hrbrthemes::theme_ipsum(base_family = "Roboto Condensed") +
  theme(
    plot.title = element_markdown(hjust = 0.5,vjust = .5,color = "black",
                                  size = 20, margin = margin(t = 1, b = 12)),
    plot.subtitle = element_markdown(hjust = 0,vjust = .5,size=15),
    plot.caption = element_markdown(hjust = 1,face = 'bold',size = 12))
69d07234e334c3f393ea992cfb0b04ac.png
Example01 Of plot_kfold_cv()

「样例三」:plot_frq()

data(iris)
ageGrp <- group_var(efc$e17age)
ageGrpLab <- group_labels(efc$e17age)
plot04 <- plot_frq(geom.colors = "#BC3C28",ageGrp,axis.labels = ageGrpLab) +
   labs(
    title = "Example of <span style='color:#D20F26'>sjPlot::plot_frq function</span>",
    subtitle = "processed charts with <span style='color:#1A73E8'>plot_frq()</span>",
    caption = "Visualization by <span style='color:#0057FF'>DataCharm</span>") +
  hrbrthemes::theme_ipsum(base_family = "Roboto Condensed") +
  theme(
    plot.title = element_markdown(hjust = 0.5,vjust = .5,color = "black",
                                  size = 20, margin = margin(t = 1, b = 12)),
    plot.subtitle = element_markdown(hjust = 0,vjust = .5,size=15),
    plot.caption = element_markdown(hjust = 1,face = 'bold',size = 12))
170cbdf84239517d12344abc7f6afe4a.png
Example Of plot_frq()

你还可以绘制这样的可视化效果:

plot05 <- plot_frq(efc$c160age, type = "h", show.mean = TRUE, geom.colors = "#0072B5",show.mean.val = TRUE,
        normal.curve = TRUE, show.sd = TRUE, normal.curve.color = "#BC3C28",
        normal.curve.size = 3, ylim = c(0,50)) +
   labs(
    title = "Example of <span style='color:#D20F26'>sjPlot::plot_frq function</span>",
    subtitle = "processed charts with <span style='color:#1A73E8'>plot_frq()</span>",
    caption = "Visualization by <span style='color:#0057FF'>DataCharm</span>") +
  hrbrthemes::theme_ipsum(base_family = "Roboto Condensed") +
  theme(
    plot.title = element_markdown(hjust = 0.5,vjust = .5,color = "black",
                                  size = 20, margin = margin(t = 1, b = 12)),
    plot.subtitle = element_markdown(hjust = 0,vjust = .5,size=15),
    plot.caption = element_markdown(hjust = 1,face = 'bold',size = 12))
73c53416228d43638c95f8fcc78ea15b.png
Example02 Of plot_frq()

「样例四」:plot_likert()

mydf <- find_var(efc, pattern = "cop", out = "df")
plot06 <- plot_likert(mydf,geom.colors = "RdBu",grid.range = c(1.2, 1.4),
      expand.grid = FALSE,
      values = "sum.outside",
      show.prc.sign = TRUE) +
   labs(
    title = "Example of <span style='color:#D20F26'>sjPlot::plot_likert function</span>",
    subtitle = "processed charts with <span style='color:#1A73E8'>plot_likert()</span>",
    caption = "Visualization by <span style='color:#0057FF'>DataCharm</span>") +
  hrbrthemes::theme_ipsum(base_family = "Roboto Condensed") +
  theme(
    plot.title = element_markdown(hjust = 0.5,vjust = .5,color = "black",
                                  size = 20, margin = margin(t = 1, b = 12)),
    plot.subtitle = element_markdown(hjust = 0,vjust = .5,size=15),
    plot.caption = element_markdown(hjust = 1,face = 'bold',size = 12))
fa1236efd85b8bcd6884f54a1a71be9f.png
Example Of plot_likert()

「样例五」:tab_model()绘制表格

data("efc")
efc <- as_factor(efc, c161sex, c172code)
m1 <- lm(barthtot ~ c160age + c12hour + c161sex + c172code, data = efc)
m2 <- lm(neg_c_7 ~ c160age + c12hour + c161sex + e17age, data = efc)
tab_model(m1, m2, p.style = "scientific", digits.p = 2)
226e90651429e83906df3fdd193c6ded.png
Example Of tab_model()

以上就是小编简单的介绍了R-sjPlot包的简单例子,希望感兴趣的小伙伴可以看些,更多详细案例和函数参数大家可阅读官网(参考资料[1])即可。

总结

今天小编给大家分享的这个宝藏可视化工具R-sjPlot包 ,不仅可以绘制出定制化的可视化作品,而且对一些统计表格更是绘制出自己喜欢的风格,希望可以给大家以后绘图提供不一样的绘图选择。


参考资料

[1]

R-sjPlot包: https://strengejacke.github.io/sjPlot/reference/index.html。

各位伙伴们好,詹帅本帅搭建了一个个人博客和小程序,汇集各种干货和资源,也方便大家阅读,感兴趣的小伙伴请移步小程序体验一下哦!(欢迎提建议)
推荐阅读



牛逼!Python常用数据类型的基本操作(长文系列第①篇)
牛逼!Python的判断、循环和各种表达式(长文系列第②篇)

牛逼!Python函数和文件操作(长文系列第③篇)

牛逼!Python错误、异常和模块(长文系列第④篇)
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值