Настройка данных для ggplot facet_wrap

115
13

Данные:

enter image description here

То, что я хотел бы сделать, это использовать facet_wrap из четырех сегментов, где каждый сегмент содержит три facet_wrap с осью x, помеченной как месяц-год, ось y со значениями, а три участка в первом сегменте будут L1, DRP-L1 и OSM-. L1 и т.д.

Верхняя метка каждого сегмента будет L1, L2, L3 и L4. У меня вопрос, могу ли я установить это с данными, как я показал выше, или я должен создать другой столбец с меткой "Местоположение", в котором будут перечислены L1, L2, L3, L4 и каждая строка значения для каждого местоположения?

Это код, который я сгенерировал до сих пор, но (1) я не уверен, как добавить другие строки, то есть DRP_1, OSM_1 и т.д. В каждом сегменте; и (2) я не уверен, почему он не отображает нулевые значения?

library(ggplot2,scales)
month=rep(c("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"),4)
numparts=c(0, 0, 0, 0, 0, 0, 52000, 2000, 0, 0, 0, 0,
0, 0, 0, 0, 35000, 5000, 0, 20000, 0, 0, 0, 0,
0, 0, 7500, 17000, 625, 0, 50, 0, 0, 2500, 0, 0,
0, 0, 250, 0, 1800, 900, 800, 500, 600, 0, 0, 11390)
location=c("Location 1","Location 2","Location 3","Location 4")
data=data.frame(month,numparts,location)

# Faceting
ggplot(data, aes(y=numparts, x=month)) +
geom_line( stat="identity") +
expand_limits(y=0)+
scale_x_discrete(labels = month)+
facet_wrap(~location,scales="free_y")+
labs(x="Month in 2017",y="Number of Parts")

enter image description here

спросил(а) 2021-01-19T16:45:13+03:00 2 месяца, 3 недели назад
1
Решение
61

Ваш код данных не совпадает с кодом на скриншоте.

Это пример данных, взяв первые 5 строк с вашего скриншота:

Для добавления других строк вам понадобится группа aes. Посмотрите на этот пост.

library(ggplot2)
library(scales)

val <- c(0, 0, 0, 0, 0,
0, 0, 0, 0, 35000,
0, 0, 7500, 17000, 625,
0, 0, 250, 0, 1800,
1548, 500, 0, 0, 0,
430, 2857, 0, 0, 0,
0, 0, 0, 0, 0,
0, 0, 0, 0, 0)

location <- c(rep("Location 1", 5),
rep("Location 2", 5),
rep("Location 3", 5),
rep("Location 4", 5))

part <- c(rep("L", 20),
rep("DRP", 20))

data <- data.frame(location, part, val)
data$month <- factor(c("Jan","Feb","Mar","Apr", "May"), levels = c("Jan","Feb","Mar","Apr", "May"))

ggplot(data, aes(y = val, x = month, group = part)) +
geom_line(aes(color = part)) + scale_x_discrete(labels = month) + facet_wrap(~location)

enter image description here

ответил(а) 2021-01-19T16:45:13+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема