如何使用r在ChartSeries()栏上添加数字

时间:2016-04-02 12:48:51

标签: r text xts quantmod

我基本上要做的是将s$cluster个数字放在每个栏的顶部

library("quantmod")

# xts object
s <- 
structure(c(1300, 1301.349976, 1281.199951, 1316.900024, 1312.310059, 
1278, 1304.439941, 1304.709961, 1313.900024, 1323.089966, 1314.98999, 
1301.719971, 1291.630005, 1271.01001, 1281.199951, 1311.040039, 
1288.329956, 1273, 1301.189941, 1287.030029, 1307.890015, 1317.030029, 
1288.959961, 1299.699951, 372300, 453800, 347600, 376400, 488200, 
567300, 1301.189941, 1287.030029, 1307.890015, 1317.030029, 1288.959961, 
1299.699951, 0.0034153392307692, 0.00258192266643587, 0.0255230051909361, 
0.00470038870619693, 0.00204214772387123, 0.0185602276995305, 
-0.00643845769230766, -0.0233142248891853, 0, -0.0044498328599013, 
-0.0182731991083518, -0.00391236306729259, 0.000915339230769252, 
-0.0110039169048249, 0.02083208321946, 9.87204781157658e-05, 
-0.0177931258240853, 0.016979617370892, 4, 3, 1, 4, 3, 1), .indexCLASS = "Date", .indexTZ = "UTC", tclass = "Date", tzone = "UTC", src = "yahoo", updated = structure(1459599733.74441, class = c("POSIXct", 
"POSIXt")), class = c("xts", "zoo"), index = structure(c(1458777600, 
1459123200, 1459209600, 1459296000, 1459382400, 1459468800), tzone = "UTC", tclass = "Date"), .Dim = c(6L, 
10L), .Dimnames = list(NULL, c("PCLN.Open", "PCLN.High", "PCLN.Low", 
"PCLN.Close", "PCLN.Volume", "PCLN.Adjusted", "h", "l", "c", 
"cluster")))

我尝试了以下内容:

# plot
chart_Series(s)

# add text on top of each bar:
text(x = s, y = s$cluster, label = as.character(s$cluster))

我尝试过在线搜索,但似乎找不到chartSeries()图的答案。提前谢谢

1 个答案:

答案 0 :(得分:1)

text调用中,x应该是您要绘制的文本位置的x坐标的数字向量,但是您提供了xts /矩阵。我猜测text调用会使用第一列的前6个观察值,因为这是您绘制的图表中有多少观察值。前6个值在1278和1317之间,它们是>&gt;。 6,所以它们不会出现在你绘制的情节中。

同样,y应该是您要绘制的文本位置的y坐标。您提供的矢量范围介于1和4之间,而您绘制的数据上的y值位于1250-1350范围内,因此您的文本坐标不在绘制的绘图中。

对于每个观察,x坐标应该只是1:nrow(s)并且y坐标应该接近Lo(s)Hi(s)。例如:

text(x = seq(nrow(s)), y = Hi(s)+1, label = as.character(s$cluster))