我有以下示例代码已从数据框中融化(这是一个示例;实际上我有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.我如何能够对投资组合进行分析,以便美国成为股票图表,而INTL将成为美国股市的图表?
感谢您的帮助。
答案 0 :(得分:0)
这是一个应该有所帮助的例子。我根据您发布的内容构建了虚拟数据,这样您就可以看到更多的数据被绘制在x轴上。
我使用了来自fct_collapse
的{{1}}(随forcats
发货)将tidyverse
折叠为风险或重量。你想用这个做什么,我并不完全清楚,所以请随时纠正我。
对于分面,您可以告诉它要拆分的列 - 在您的情况下为variable
。要获得单个列(您说您想要一个列在另一个列之下),请使用Portfolio
,并且只获取每个组合中出现的x轴标签,请使用ncol = 1
。
scales = "free_x"
由reprex package(v0.2.0)创建于2018-04-30。