【问题标题】:Editing the y axis on a sjplot in R (plot_model)在 R (plot_model) 中编辑 sjplot 上的 y 轴
【发布时间】:2020-08-06 09:15:07
【问题描述】:

我在创建的这个 sjplot 上的 y 轴有问题。我不确定为什么这些值是这样排列的(见图),并且想知道是否有人可以帮助我,例如将我的 y 轴设置为从 0 开始。

library(jtools)
library(carData)
library(effects)
library(sjPlot)
mod <- glmer(Golden.Trevally ~ Maturity.Status + Behavioural.Activity + (1 | ID.Number), family = "binomial", data = mydf2)
summary(mod)
plot_model(mod, "pred", title="")

【问题讨论】:

  • 你的值小于零怎么办?
  • 至于尺度可以用ylim=c(0,1)
  • 我试过 ylim=c(0,1) - 它不会改变任何东西 plot_model(mod, "pred", title="", ylim=c(0,1)) 。脚本创建的情节肯定是错误的 - 0 % 和 1% 重复
  • @mhh 没有 y 值低于 0,因为该图显示了概率。奇怪的 y 轴是由所有四舍五入到最接近的百分比的中断引起的(如下所示)

标签: r yaxis sjplot


【解决方案1】:

到目前为止,回答这个问题最难的部分是重新创建数据以使其可重现。但是,以下内容非常接近:

library(jtools)
library(carData)
library(effects)
library(sjPlot)
library(lme4)

set.seed(69)

Behavioural.Activity <- factor(sample(c("Cleaning", "Courtship", 
                                        "Cruising", "Feeding"),
                                        size = 10000, 
                                        replace = TRUE))
Maturity.Status <- factor(sample(LETTERS[1:3], 10000, TRUE))
ID.Number <- factor(sample(500, 10000, TRUE))
Golden.Trevally <- rbinom(10000, 1, prob =
                          (c(6, 4, 7, 3)/600)[as.numeric(Behavioural.Activity)] *
                          c(0.8, 1, 1.2)[as.numeric(Maturity.Status)] *
                          (as.numeric(ID.Number) / 1000 + 0.75))

mydf2 <- data.frame(ID.Number, Golden.Trevally, 
                    Behavioural.Activity, Maturity.Status)

mod <- glmer(Golden.Trevally ~ Maturity.Status + Behavioural.Activity + (1 | ID.Number), 
             family = "binomial", data = mydf2)

my_sjplot <- plot_model(mod, "pred", title = "")

my_sjplot$Behavioural.Activity

这里的解决方案是实现plot_model返回的对象是一个包含两个ggplot对象的列表。您看到的是Behavioural.Activity。它看起来是这样的,因为它有一个scale_y_continuous,它的标签功能是将中断标记到最接近的百分比。你可以简单地用你自己的规模来覆盖这个规模:

my_sjplot$Behavioural.Activity +
   scale_y_continuous(limits = c(0, 0.01), 
                      labels = scales::percent_format(accuracy = 0.01))

【讨论】:

  • 非常感谢!!!!我知道这与 y 轴的比例有关。我想知道您是否也可以帮助我更改 x 轴的标签。我已经设法改变了 y 但我为 x 尝试的一切都不起作用。即使我尝试axis.title.y和axis.title.x my_sjplot
  • @AimeeNicholson-Jack 你可以尝试同样的技巧,但包括+ labs(x = "Predicted Probability of Golden Trevally Presence")
猜你喜欢
  • 2022-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多