Различные цвета линий на выходе лесного участка из пакета sjPlot R - PullRequest
0 голосов
/ 09 апреля 2019

Я готовлю лесные участки с коэффициентами регрессии, используя пакет sjPlot. Как я могу настроить цвет линий коэффициентов регрессии, чтобы иметь один цвет для каждого коэффициента?

Я пытался использовать аргумент colors = c("blue", "red", "black") внутри plot_model function, но он не работал. Я также пытался использовать разные палитры в сочетании с scale_color_manual, но он тоже не работал.

Вот пример из пакета sjPlot:

library(sjPlot)
library(sjmisc)
data(efc)

#I used log before each predictor to have an example of confidence interval
fit <- lm(tot_sc_e ~ log(c161sex) + log(e17age) + log(c160age), data = efc)

plot_model(fit, colors = c("blue", "red", "black"))

Это дает мне сюжет с двумя синими линиями и одной красной линией. Нет черной линии на сюжете!

enter image description here

Попытка использовать другие способы не помогла:

plot_model(fit, colors = NULL)+
  scale_fill_sjplot(palette = "viridis", discrete = TRUE)+
  scale_color_viridis(discrete = TRUE)

На самом деле используется палитра viridis, но опять-таки две фиолетовые линии и одна желтая. И он возвращает следующие сообщения:

«Шкала для« заполнения »уже существует. Добавление еще одной шкалы для« заполнения », которая заменит существующую шкалу». «Шкала для« цвета »уже существует. Добавляется еще одна шкала для« цвета », которая заменит существующую шкалу».

enter image description here

Если я установлю colors = NULL в коде, он не должен возвращать эти сообщения, не так ли?

Буду признателен за помощь в получении одного цвета для каждого предиктора. Примечание: этот график будет объединен с другими графиками с теми же предикторами. Поэтому я хочу, чтобы они были одинакового цвета на обоих графиках, чтобы улучшить читаемость.

1 Ответ

0 голосов
/ 10 апреля 2019

По умолчанию эстетика цвета / заливки сопоставляется с тем, является ли каждый коэффициент положительным или отрицательным. Чтобы переопределить это и указать sjPlot обрабатывать каждый из 3 коэффициентов как отдельную группу, вы можете указать group.terms = c(1, 2, 3) в качестве параметра в plot_model:

plot_model(fit, 
           group.terms = c(1, 2, 3), 
           colors = c("blue", "red", "black"))

with group terms set

Поведение функции по умолчанию также сортирует коэффициенты в алфавитном порядке, что приводит к путанице сине-красно-черной последовательности. Чтобы сохранить исходный порядок коэффициентов (то есть порядок в fit), мы можем дополнительно указать order.terms в plot_model:

plot_model(fit, 
           group.terms = c(1, 2, 3), 
           order.terms = c(1, 2, 3),
           colors = c("blue", "red", "black"))

plot

...