#r
#r
Вопрос:
Я пытался использовать ggplot2 для создания профессионально выглядящего графика, но у меня возникли некоторые проблемы со многими вещами. Я хотел бы добавить цвет к точкам данных, добавить даты по оси x и создать линию наилучшего соответствия или что-то подобное, если это возможно. Я искал в Stack Exchange и Google в целом, чтобы попытаться решить эту проблему, но безрезультатно. Я использую «Коэффициент участия в гражданской рабочей силе: мужчины 20 лет и старше, чернокожие или афроамериканцы» из Федерального резервного банка Сент-Луиса (FRED).
Я использую RStudio, и я импортировал данные из LNS11300031, а затем использовал read.csv()
функцию для считывания их в RStudio
. Изначально я использовал plot()
функцию для построения данных, но я хочу использовать ggplot()
функцию для создания более красивого графика, но когда я создаю график, точки данных выглядят очень непрозрачными, размытыми и облачными, и на оси x нет меток. Я хотел бы добавить цвет и линию наилучшего соответствия, но я не знаю, как это сделать.
Это код, который я использовал для создания графика без меток по оси x:
ggplot(data = labor, mapping = aes(x = labor$DATE, y = labor$LNS11300031)) geom_point(alpha = 0.1)
Это график, созданный моим кодом:
Вот некоторые примеры данных (labor — это переменная, которую я использовал для хранения данных с сайта FRED):
head(labor) DATE LNS11300031
1 1972-01-01 77.6
2 1972-02-01 78.3
3 1972-03-01 78.7
4 1972-04-01 78.6
5 1972-05-01 78.7
6 1972-06-01 79.4
Я хотел бы изменить имя переменной LNS11300031
на коэффициент участия рабочей силы
Дополнительная информация о данных:
str(labor)
'data.frame': 566 obs. of 2 variables:
$ DATE : Factor w/ 566 levels "1972-01-01","1972-02-01",..: 1 2 3 4 5 6 7 8 9 10 ...
$ LNS11300031: num 77.6 78.3 78.7 78.6 78.7 79.4 78.8 78.7 78.6 78.1 ...
Я хотел бы, чтобы код создавал гораздо более четкие точки данных с цветом и линией тренда, а также мог иметь ось x с соответствующими датами.
Комментарии:
1. «Как мне сделать так, чтобы график выглядел красиво» — довольно широкий вопрос, и вам, возможно, было бы лучше начать с чего-то вроде ggpubr , который имеет несколько приятных настроек по умолчанию для внешнего вида. Тем не менее, ваши требования довольно специфичны, поэтому я думаю, что на этот вопрос следует ответить.
2. Два других кратких комментария: ваши точки выглядят размытыми, потому что вы сделали их размытыми с помощью
alpha = 0.1
! Убедитесь, что эта опция выполняет то, что вы хотите. И у вас действительно есть метки по оси x, просто у вас их так много, что все они сливаются в нечитаемый беспорядок.
Ответ №1:
Вот основная попытка охватить все 3 желаемых улучшения:
- Более четкие указания: не устанавливайте альфа-значение слишком низким! Немного альфа-текста хорошо подходит для точек перекрытия, но
alpha = 0.1
делает их слишком размытыми. - Цвет: R понимает простые названия цветов, такие как «красный», но также и шестнадцатеричные цветовые коды. Выберите любые цвета, которые вы хотите.
- Линия тренда: легко добавляется с помощью
stat_smooth()
. Я использовалmethod='lm'
, который дает прямую линию линейной регрессии, но есть более гибкие альтернативы. - Метки даты на оси x: Убедитесь, что для вашего
DATE
столбца правильно заданDate
тип, и используйтеscale_x_date()
для настройки меток.
quantmod::getSymbols("LNS11300031", src="FRED")
# Your data is available from the quantmod package
labor = LNS11300031 %>%
as.data.frame() %>%
rownames_to_column(var = "DATE") %>%
# Make sure DATE is a Date column
mutate(DATE = as.Date(DATE))
# Generally, you don't use data$column syntax within ggplot,
# just give the column name
ggplot(data = labor, mapping = aes(x = DATE, y = LNS11300031))
geom_point(alpha = 0.7, colour = "#B07AA1")
stat_smooth(method = "lm", colour = "#E15759", se = FALSE)
scale_x_date(date_breaks = "5 years", date_labels = "%Y")
theme_minimal()
Вывод:
Комментарии:
1. Большое тебе спасибо, Мариус, я действительно ценю твою оперативную помощь, ты полностью ответил на мой вопрос, а также добавил информацию, о которой я не знал, но я очень рад, что ты включил, и добавил объяснение, которое мне было нужно, чтобы понять, что мне нужно делать дальше. Еще раз спасибо!!!
2. Могу ли я каким-либо образом добавить показатель участия афроамериканцев в рабочей силе также для женщин? Я использовал тот же пакет quantmod, что и вы, quantmod::getSymbols(«LNU01300032″, src =»FRED»), а затем я создал новую переменную labor2 с точно таким же значением, как вы сделали для переменной labor, и я просто заменил LNS11300031 на LNU01300032, но теперь я не уверен, как добавить оба графика к графику, используя ggplot.
3. @pierrefrancois Да, одним из способов было бы добавить еще одну геометрическую точку и stat_smooth к существующему графику и установить «data = labor2» в новых геометриях.