Можно ли изменить ширину линии для более гладких линий в случае диагностического графика (ggplot2)?

Я хотел бы настроить диагностические графики в ggplot2. Я попробовал это:

library(ggfortify)
library(ggplot2)
model1 <- lm(len~dose*supp, data = ToothGrowth)
autoplot(model1, which = 1, label.size = 3, data = ToothGrowth, size=3, colour = "dose",
     smooth.colour = 'darkblue', smooth.linetype="dotted", smooth.linesize=3)

Я получил эту картину:

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

Я изменил цвет и тип линии для более гладкой линии, но я не знаю, как я могу изменить ширину линии. Я пробовал "smooth.linesize", но он не работает. Можно ли как-нибудь изменить ширину линии?

Кто-нибудь может мне помочь? Благодарю вас.

1 ответ

Решение

Одним из вариантов будет добавить еще один слой на ваш график, так как autoplot.lm не предоставляет желаемый аргумент smooth.linesize, Первая часть генерирует ваш сюжет, p,

p <- autoplot(model1, which = 1, label.size = 3, data = ToothGrowth, size=3, colour = "dose",
     smooth.colour = 'darkblue', smooth.linetype="dotted")

Нужные данные сглаженной линии теперь можно найти где-то глубоко внутри p Вот: p@plots[[1]]$layers[[2]]$data

Это можно использовать как data аргумент в призыве к geom_*, Следующий код генерирует график ниже.

p + geom_line(data = p@plots[[1]]$layers[[2]]$data, aes(x = x, y = y), linetype = 3, col = "red", size = 3)

Другой вариант - добавить еще не существующий параметр эстетики. size на соответствующий слой объекта сюжета самостоятельно. Я думаю, что этот вариант ближе к тому, что вы хотите достичь.

Это можно сделать через

p@plots[[1]]$layers[[2]]$aes_params$size <- 3
p

Надеюсь, это поможет.

Другие вопросы по тегам