如何使用visreg和ggplot2更改轴标签

时间:2019-04-15 19:54:33

标签: r ggplot2 plot visreg

我正在将visreg包与gg = TRUE一起使用(因此它将使用ggplot2图形)来渲染我的拟合模型图。

它会自动使用自变量因子的名称作为x轴标签,但我需要它们看起来略有不同,并尝试使用scale_x_discrete来更改标签文本,如here所示。

但是,当我这样做时,x轴标签,轴线及其标题将变为空白。 我相信我无法将labels参数映射到breaks参数。

我也收到消息

  

“ x”的比例已经存在。为“ x”添加另一个比例,它将替换现有比例。

问题可能出在visreg如何存储变量(及其级别)信息上。单独使用ggplot2时,可以使用data$variablename从使用的数据集中轻松恢复此信息。但是通过visreg创建基本情节并不是那么简单。

我已经尝试过的:

  • 使用默认情况下绘制的变量级别名称作为中断。
  • 尝试使用fit$xlevels$Species访问变量级别。
  • 猜测visreg可能是将整数指定为级别,并尝试使用 breaks = c(as.factor("1","2","3"))

如何重现该问题:

library(visreg)
library(ggplot2)

data(iris)
fit <- lm(Sepal.Length ~ Species, data = iris)

visreg(fit, gg = T) +
  theme(axis.line = element_line(colour = "black")) +
  scale_x_discrete(breaks = c("setosa", "versicolor", "virginica"),
                   labels = c("SETOSA", "VERSICOLOR", "VIRGINICA"))

# ----------------------- OR the equivalent: 

visreg(fit, gg = T) +
  theme(axis.line = element_line(colour = "black")) +
  scale_x_discrete(labels = c("setosa" = "SETOSA",
"versicolor" = "VERSICOLOR", "virginica" = "VIRGINICA"))

x轴的外观而无需尝试更改标签:

library(visreg)
library(ggplot2)

data(iris)
fit <- lm(Sepal.Length ~ Species, data = iris)

visreg(fit, gg = T) +
  theme(axis.line = element_line(colour = "black"))

1 个答案:

答案 0 :(得分:3)

我建议这个简单的解决方案:

library(visreg)
library(ggplot2)

data(iris)
iris$Species <- factor(iris$Species, labels=c("SETOSA", "VERSICOLOR", "VIRGINICA"))

fit <- lm(Sepal.Length ~ Species, data = iris)
visreg(fit, gg = T)

enter image description here