R使用ggplot绘制股票折线图如何根据涨跌幅正负设置线条颜色
R代码修改方案:按股票区间涨跌幅调整折线颜色
核心修改逻辑:
- 分组计算时先存储区间涨跌幅的中间变量,新增逻辑列标记涨跌幅正负
- 将折线颜色映射到正负标记列,手动指定正涨跌幅对应蓝色、负涨跌幅对应红色
- 可选择隐藏颜色图例,避免和分面标题信息重复
修改后完整代码如下:
df1 %>% mutate(ref.date = as.Date(ref.date)) %>% arrange(ticker, ref.date) %>% group_by(ticker) %>% # 新增涨跌幅计算、正负标记逻辑 mutate(pct_change = round((last(price.close) - first(price.close))/first(price.close) * 100, 2), ticker = paste(ticker, pct_change, '%'), is_gain = pct_change >= 0, label = replace(round(price.close,2), -c(1, n()), '')) %>% ggplot(aes(x = ref.date, y = price.close, label = label)) + # 将颜色映射到涨跌标记列,不需要图例可保留show.legend参数 geom_line(aes(color = is_gain), size=1, show.legend = FALSE) + # 手动指定颜色规则:上涨蓝色、下跌红色 scale_color_manual(values = c("TRUE" = "blue", "FALSE" = "red")) + geom_text(size = 3, fontface="bold") + facet_wrap(~ticker, scales = 'free_y')
如果需要保留图例说明颜色含义,删除geom_line中的show.legend = FALSE参数即可。
内容的提问来源于stack exchange,提问作者user3115933
相关产品推荐
相关产品推荐

