Я использую пакет visreg
с gg = TRUE
(поэтому он будет использовать ggplot2
графику) для рендеринга графиков с подогнанными моделями.
Он автоматически использует имена факторов независимых переменных в качестве меток оси x, но мне нужно, чтобы они выглядели немного по-другому, и попытался изменить текст меток с помощью scale_x_discrete
, как можно увидеть здесь .
Но когда я это сделаю, метки оси x, линия оси и ее заголовок станут пустыми.Я считаю, что мне не удается сопоставить параметр labels
с параметром * 1012. *
Я также получаю сообщение
Масштаб для 'x' уже присутствует.Добавление еще одной шкалы для «x», которая заменит существующую шкалу.
Проблема, вероятно, заключается в том, как visreg
хранит информацию о переменных (и их уровнях).При использовании только ggplot2
эта информация может быть легко восстановлена из использованного набора данных с помощью data$variablename
.Но, создав базовый график с помощью visreg
, это не так просто.
То, что я уже пробовал:
- Использование имен уровней переменных, которые по умолчанию отображаются какbreaks.
- Попытка получить доступ к переменным уровням с помощью
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"))
Как выглядит ось х, не пытаясь изменить метки:
library(visreg)
library(ggplot2)
data(iris)
fit <- lm(Sepal.Length ~ Species, data = iris)
visreg(fit, gg = T) +
theme(axis.line = element_line(colour = "black"))