#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"))