Вот пример, который должен помочь. Я построил фиктивные данные из того, что вы опубликовали, просто чтобы вы могли видеть больше на графике по оси X.
Я использовал fct_collapse
из forcats
(корабли с tidyverse
), чтобы свернуть variable
в Риск или Вес. Что вы хотели с этим сделать, я не совсем понял, так что не стесняйтесь поправлять меня в этом.
Для огранки вы указываете, на какой столбец вы хотите разбить - в вашем случае, Portfolio
. Чтобы получить один столбец (вы сказали, что хотите один под другим), используйте ncol = 1
, а чтобы получить только метки оси X, которые встречаются в каждом портфеле, используйте scales = "free_x"
.
library(tidyverse)
dummy <- tibble(
Ticker = rep(letters[1:6], each = 3),
variable = rep(c("Factor_Risk", "Stock_Specific_Risk", "Weight"), times = 6),
value = runif(18, 0, 1),
Portfolio = rep(c("US", "INTL"), each = 9)
) %>%
arrange(Ticker, variable, Portfolio) %>%
mutate(type = as.factor(variable) %>% fct_collapse(Risk = c("Factor_Risk", "Stock_Specific_Risk")))
ggplot(dummy, aes(x = Ticker, y = value)) +
geom_col(data = . %>% filter(type == "Risk")) +
geom_point(data = . %>% filter(type != "Risk")) +
facet_wrap(~ Portfolio, ncol = 1, scales = "free_x")

Создано в 2018-04-30 пакетом Представить (v0.2.0).