使用 geom_point 与 geom_col 和分面

Using geom_point with geom_col and faceting

我有下面的示例代码,它是从一个数据框中提取出来的(这是一个例子;实际上我有 8 个投资组合,每个投资组合有 30 个代码):

Ticker       variable                value   Portfolio
AAPL          Factor_Risk            4.66      US
ABBV          Factor_Risk            1.71     INTL
AAPL          Stock_Specific_Risk    0.21      US
ABBV          Stock_Specific_Risk    0.07     INTL
AAPL          Weight                 4.00      US
ABBV          Weight                 1.66     INTL

这还假设美国投资组合仅由 AAPL 组成,INTL 投资组合仅由 ABBV 组成。我有一些代码可以让我构建一个堆积条形图(用于风险)和一条线(用于重量):

Raw_Portfolio_Data_melt$Type = factor(ifelse(Raw_Portfolio_Data_melt$variable == "Weight", "Weight", "Risk"),
             levels = c("Weight", "Risk"))

ggplot(Raw_Portfolio_Data_melt, aes(x = Ticker, y = value)) +
  geom_col(data = subset(Raw_Portfolio_Data_melt, variable != "Weight"), aes    (fill = variable)) +
  geom_line(data = subset(Raw_Portfolio_Data_melt, variable == "Weight"), aes   (group = 1, color = variable)) +
  scale_color_manual(values = "black") +
  theme(axis.text.x = element_text(angle = 90, hjust = 1))

两个问题(对 R 很新,对 ggplot 更新) 1.如何调整线以便使用几何点(基本上只有一个标记而不是一条线)作为权重 2. 我如何对投资组合进行分面,以便 US 成为股票图表,而 INTL 成为 US 下方的图表?

感谢您的所有帮助。

下面是一个应该有所帮助的示例。我根据您发布的内容构建了虚拟数据,这样您就可以在 x 轴上看到更多内容。

我使用 forcats 中的 fct_collapsetidyverse 附带)将 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")

reprex package (v0.2.0) 创建于 2018-04-30。