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

如何在R语言Quantmod的chartSeries图表上添加标记点?

在chartSeries图表上标记点的正确方法

问题原因

chartSeries 是quantmod包基于grid绘图系统实现的绘图函数,而base R的points()属于base绘图系统,两者不兼容,所以直接调用points()无法在chartSeries生成的图上显示点。

解决方案

以下是几种可行的实现方法:

方法1:使用quantmod原生的addSymbols()函数

这是最贴合chartSeries工作流的方式,直接在技术指标参数(TA)中添加标记点:

library(quantmod)

# 获取AAPL数据
symb <- getSymbols("AAPL", from = "2024-02-01", src = 'yahoo', auto.assign = FALSE)

# 绘制图表并添加标记点
chartSeries(symb, 
            theme = chartTheme("white", dn.col = "red"),
            TA = list(
                "addEMA(5)", 
                "addEMA(20)",
                # 自定义标记点的形状、颜色、大小
                "addSymbols(x = as.Date('2024-05-20'), y = 180, pch = 17, col = 'darkblue', cex = 1.5)"
            )
            )

方法2:切换到新版chart_Series() + addPoints()

quantmod官方现在更推荐使用带下划线的chart_Series(),它支持更直观的addPoints()函数:

library(quantmod)

symb <- getSymbols("AAPL", from = "2024-02-01", src = 'yahoo', auto.assign = FALSE)

# 使用新版绘图函数
chart_Series(symb, theme = chartTheme("white", dn.col = "red"))
addEMA(5)
addEMA(20)
# 添加目标标记点
addPoints(x = as.Date('2024-05-20'), y = 180, pch = 17, col = "darkred", cex = 1.2)

方法3:手动转换坐标用grid包自定义绘图

如果需要更精细的控制,可以通过坐标映射转换后,用grid包的函数绘制:

library(quantmod)
library(grid)

symb <- getSymbols("AAPL", from = "2024-02-01", src = 'yahoo', auto.assign = FALSE)

chartSeries(symb, 
            theme = chartTheme("white", dn.col = "red"),
            TA = list("addEMA(5)","addEMA(20)")
            )

# 获取图表的坐标映射关系
coords <- xy.coords(index(symb), symb[, "AAPL.Close"])
# 定位目标日期的x轴位置
x_pos <- which(index(symb) == as.Date("2024-05-20"))
# 转换为grid系统的坐标单位
grid_x <- unit(coords$x[x_pos], "native")
grid_y <- unit(180, "native")

# 绘制自定义点
grid.points(grid_x, grid_y, pch = 17, gp = gpar(col = "darkgreen", cex = 1.5))

补充说明

  • 优先推荐方法1或方法2,无需手动处理坐标,更符合quantmod的设计逻辑。
  • 可以通过调整pch(点形状)、col(颜色)、cex(大小)参数,匹配你想要的标记效果。

内容的提问来源于stack exchange,提问作者GX001

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 22:01:02