使用ggplot绘制AAPL、TSLA相关图表时仅显示单图的问题求助
问题一:箱线图仅显示AAPL的修复
你的代码筛选条件用了is.finite(ey),但绘图变量是ret60——如果TSLA的ey存在缺失值,会导致该股票所有数据被过滤,只留下AAPL。
修正代码:
ggplot(dailyPrice[ticker %in% c('AAPL','TSLA') & is.finite(ret60)], aes(y=ret60, x=ticker)) + geom_boxplot()
若需同时保证ey和ret60有效,可修改筛选条件:
ggplot(dailyPrice[ticker %in% c('AAPL','TSLA') & is.finite(ret60) & is.finite(ey)], aes(y=ret60, x=ticker)) + geom_boxplot()
问题二:折线图仅显示一条的修复
原代码有两个核心问题:
- 全局数据仅包含AAPL,若TSLA的日期范围与AAPL不重叠,会因坐标轴范围限制无法显示
- 未指定
group,ggplot无法识别两条折线的分组逻辑
推荐统一筛选数据后用颜色映射区分股票:
plot_data <- dailyPrice[ticker %in% c('AAPL','TSLA') & is.finite(ey)] ggplot(plot_data, aes(x=date, y=ey, color=ticker)) + geom_line() + scale_color_manual(values=c('AAPL'='blue', 'TSLA'='red'))
如果坚持分开调用geom_line,需显式设置坐标轴范围并指定分组:
ggplot(dailyPrice[ticker =='AAPL' & is.finite(ey)], aes(x=date ,y=ey)) + geom_line(color='blue') + geom_line(data=dailyPrice[ticker =='TSLA' & is.finite(ey)], aes(x=date ,y=ey, group=ticker), color='red') + xlim(min(dailyPrice$date, na.rm=TRUE), max(dailyPrice$date, na.rm=TRUE))
内容的提问来源于stack exchange,提问作者ceek
相关产品推荐
相关产品推荐

