Как изменить метки осей с помощью visreg вместе с ggplot2

#r #ggplot2 #plot #visreg

#r #ggplot2 #график #visreg

Вопрос:

Я использую visreg пакет с gg = TRUE (поэтому он будет использовать ggplot2 графику) для рендеринга моих подогнанных графиков модели.

Он автоматически использует имена независимых переменных факторов в качестве меток оси x, но мне нужно, чтобы они отображались немного по-другому, и я попытался изменить текст меток, используя scale_x_discrete , как показано здесь.

Но когда я это делаю, метки оси 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:

Я предлагаю это простое решение:

 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)
  

введите описание изображения здесь