【问题标题】:Removing frame from and rotate header on plotreg() output从 plotreg() 输出中删除框架并旋转标题
【发布时间】:2021-12-09 00:05:24
【问题描述】:

我正在使用 texreg 包中的 plotreg() 来显示系数和 CI 估计值,但我发现我无法重现具有与其他人类似的布局的图形输出。例如,使用工作示例here

# install.packages("texreg")
library(texreg)

# load example data
library(car)
prestige.dat <- data.frame(Prestige)

# standardizing the data
pres_mean <- mean(prestige.dat$prestige, na.rm = TRUE)
pres_sd <- sd(prestige.dat$prestige, na.rm = TRUE)
prestige.dat$prestige.std <- (prestige.dat$prestige - pres_mean) / pres_sd
                                
inc_mean <- mean(prestige.dat$income, na.rm = TRUE)
inc_sd <- sd(prestige.dat$income, na.rm = TRUE)
prestige.dat$income.std <- (prestige.dat$income - inc_mean) / inc_sd
                            
educ_mean <- mean(prestige.dat$education, na.rm = TRUE)
educ_sd <- sd(prestige.dat$education, na.rm = TRUE)
prestige.dat$education.std <- (prestige.dat$education - educ_mean) / educ_sd

# standardized regression
mod.std <- lm(prestige.std ~ income.std + education.std, data = prestige.dat)

# plot
plotreg(list(mod.std),
          custom.coef.names = c("Intercept", "Income", "Education"),
          custom.model.names = c("Model"),
          reorder.coef = c(2, 3, 1),
          lwd.vbars = 0)

据说,我应该制作这样的东西

但我得到了这个

我想知道是否有办法删除我的 plotreg 输出的外框并将标题 (Model) 放在图表顶部(而不是将其垂直放置在左侧 y 轴上)图)?

或者可能是包的作者已经大幅更改了默认设置,因此工作示例中使用的布局不再可用。

#更新

按照@IRTFM 的建议(更改绘图theme()),我能够使图形输出看起来与工作示例非常相似。 这样框架就被移除了,主标题现在位于图表的顶部,只是我仍然无法将 0-reference 垂直条设置为实线(我尝试在 coefplot() 中使用 [ref.line.par][4] 参数,但是它没有工作)

我使用了以下代码:

plt <- plotreg(list(mod.std),
          custom.coef.names = c("Intercept", "Income", "Education"),
          custom.model.names = c("Model"),
          reorder.coef = c(2, 3, 1),
          lwd.vbars = 0)

library(ggplot2)
plt + ggtitle("Model") + 
      theme(panel.border=element_blank(),               strip.text=element_text(size=12, colour="transparent"), strip.background=element_rect(colour="transparent", fill="transparent"), plot.title = element_text(hjust = 0.5))

输出如下所示

【问题讨论】:

  • 你能找到一个表现出相同结果的数据集,或者你能发布足够的数据来解决这个问题吗?
  • @IRTFM 我遵循董事会的规则,提出最小的示例,我只是复制了该基于网络的手册中列出的代码,使用相同的数据,但无法重现作者的图形结果。我的意思是代码有效,但它无法产生相同的布局。
  • 哦。对不起。我没有意识到 Prestige 是加载的包中的数据集。这些“其他人”是谁?

标签: r ggplot2 texreg


【解决方案1】:

在我看来,它就像一个格子图。有三种主要的绘图范式:base、lattice 和 ggplot。如果你执行:

plt <- plotreg(  list(mod.std),
     custom.coef.names = c("Intercept", "Income", "Education"),
     custom.model.names = c(""),
     reorder.coef = c(2, 3, 1),
     lwd.vbars = 0)

str(plt)

...你会在结果的最后看到

 # much above
 attr(*, "class")= chr [1:2] "gg" "ggplot"

所以我错了。这是一个 ggplot,因此您需要查看主题设置并弄清楚如何 a)摆脱框和网格,b)围绕 CI 条,以及 c)摆脱 y 方向的“模型”带 AKA “刻面”标签。

搜索:

a)https://stackoverflow.com/questions/10861773/remove-grid-background-color-and-top-and-right-borders-from-ggplot2?r=SearchResults&s=1|84.3914

b) 将 $ lineend : chr "butt"` # 更改为舍入(不工作)

$ theme      :List of 93
..$ line                      :List of 6
.. ..$ colour       : chr "black"
.. ..$ size         : num 0.5
.. ..$ linetype     : num 1
.. ..$ lineend      : chr "butt"

c) 去掉分面标签:

plt +theme(panel.border=element_blank(),
           strip.text=element_text(size=12, colour="transparent"),
           strip.background=element_rect(colour="transparent", 
                                         fill="transparent"))

所以我已经破解了大部分内容并且可以做到这一点:

【讨论】:

  • 非常感谢您的建议,我能够尽可能使输出看起来像我想要的那样(请参阅我对原始帖子的更新),只是我仍然无法更改0 参考垂直线到实线。
猜你喜欢
  • 2019-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-21
相关资源
最近更新 更多