You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 20:50:33