当前位置:   article > 正文

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

模型训练结果 的表格绘制

如何将社会科学(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()

  1. library(tidyverse)
  2. library(ggtext)
  3. library(hrbrthemes)
  4. library(sjPlot)
  5. library(sjlabelled)
  6. library(sjmisc)
  7. # 构建数据
  8. data(efc)
  9. y <- ifelse(efc$neg_c_7 < median(na.omit(efc$neg_c_7)), 01)
  10. # create data frame for fitting model
  11. df <- data.frame(
  12.   y = to_factor(y),
  13.   sex = to_factor(efc$c161sex),
  14.   dep = to_factor(efc$e42dep),
  15.   barthel = efc$barthtot,
  16.   education = to_factor(efc$c172code)
  17. )
  18. # set variable label for response
  19. set_label(df$y) <- "High Negative Impact"
  20. # fit model
  21. m1 <- glm(y ~., data = df, family = binomial(link = "logit"))
  22. #可视化绘制
  23. plot01 <- plot_model(m1,vline.color = "red",show.values = TRUE, value.offset = .3) + 
  24.   labs(
  25.     title = "Example of <span style='color:#D20F26'>sjPlot::plot_model function</span>",
  26.     subtitle = "processed charts with <span style='color:#1A73E8'>plot_model()</span>",
  27.     caption = "Visualization by <span style='color:#0057FF'>DataCharm</span>") +
  28.   hrbrthemes::theme_ipsum(base_family = "Roboto Condensed") +
  29.   theme(
  30.     plot.title = element_markdown(hjust = 0,vjust = .5,color = "black",
  31.                                   size = 20, margin = margin(t = 1, b = 12)),
  32.     plot.subtitle = element_markdown(hjust = 0,vjust = .5,size=15),
  33.     plot.caption = element_markdown(hjust = 1,face = 'bold',size = 12))
020c43757c988626d5bed58f662b93b2.png
Example01 Of plot_model Results

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

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

「样例二」:plot_kfold_cv()

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

「样例三」:plot_frq()

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

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

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

「样例四」:plot_likert()

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

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

  1. data("efc")
  2. efc <- as_factor(efc, c161sex, c172code)
  3. m1 <- lm(barthtot ~ c160age + c12hour + c161sex + c172code, data = efc)
  4. m2 <- lm(neg_c_7 ~ c160age + c12hour + c161sex + e17age, data = efc)
  5. 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。

各位伙伴们好,詹帅本帅搭建了一个个人博客和小程序,汇集各种干货和资源,也方便大家阅读,感兴趣的小伙伴请移步小程序体验一下哦!(欢迎提建议)
  1. 推荐阅读
  2. 牛逼!Python常用数据类型的基本操作(长文系列第①篇)
  3. 牛逼!Python的判断、循环和各种表达式(长文系列第②篇)
  4. 牛逼!Python函数和文件操作(长文系列第③篇)
  5. 牛逼!Python错误、异常和模块(长文系列第④篇)
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/606008
推荐阅读
相关标签
  

闽ICP备14008679号