Я изо всех сил пытаюсь создать непрерывный линейный график с гистограммой. Я использовал приведенный ниже код, чтобы построить этот график.
Можно ли как-нибудь использовать geom_line
со средним значением?
ggplot(df, aes(Date, Rain)) +
geom_col() +
geom_line(aes(y = a + Temperature*b), size = 1.5, color = "red") + #linetype = "dashed",
theme(axis.line.y.right = element_line(color = "red"),
axis.ticks.y.right = element_line(color = "red"),
axis.text.y.right = element_text(color = "red"),
axis.title.y.right = element_text(color = "red"))+
scale_x_discrete(guide = guide_axis(angle = 90))+
scale_y_continuous("Precipitation", sec.axis = sec_axis(trans=~.*3, name = "Temperature"))
Вот ссылка на мой файл данных https://docs.google.com/spreadsheets/d/13kosrVt0kQsjM1dPFn4hOCp3UQ9fmBBU_KlXVRfL_J0/edit?usp=sharing
Может быть stat_summary(aes(y = Temperature), geom = "line", fun = mean)
У вас есть несколько наблюдений в день (из-за столбца времени). Вы можете либо суммировать два измерения (дождь и температуру) по дате перед построением графика, либо использовать функцию stat_summary
из ggplot2 для необработанных данных.
Кроме того, ваш код предполагает, что ось X содержит даты, хранящиеся в виде символов. Возможно, вы захотите сначала преобразовать их в действительные даты.
df$Date <- as.Date(df$Date, format = "%m/%d/%Y")
summarise(df, Rain=sum(Rain), Temperature=mean(Temperature),
.by=Date) |>
ggplot(aes(Date, Rain, group=1)) + # Need to specify group
geom_line(aes(y = Temperature), linewidth = 1.5, color = "red") +
scale_x_date(guide = guide_axis(angle = 90),
breaks = "day") +
scale_y_continuous("Precipitation",
sec.axis = sec_axis(~.*3, name = "Temperature")) +
theme(...) +
...
Или,
ggplot(df, aes(Date, Rain)) +
geom_col() +
stat_summary(aes(y = Temperature), geom = "line", fun = mean,
linewidth = 1.5, color = "red") +
theme(...) +
...
У меня возникла ошибка при первом ответе Error in quickdf(.data[names(cols)]) : length(rows) == 1 is not TRUE
Не загружайте пакет plyr: detach(package:plyr)
Привет, среднее значение, использованное в приведенном выше примере, не совпадает при расчете вручную и использовании stat_summary
? Есть идеи ?
Я получаю одинаковые результаты, используя любой метод. Средние значения для первых 5 дней: 15,0, 13,3, 13,2, 14,6, 15,5.
Спасибо за помощь. Исправляю ошибку.
Было бы легче вам помочь, если бы вы предоставили минимальный воспроизводимый пример включая фрагмент ваших входных данных, которые лучше всего передавать с помощью
dput()
или с использованием некоторых поддельных данных или с использованием встроенного набора данных.