Python Pyplot未为检测到的峰值绘制标记

Python Pyplot未为检测到的峰值绘制标记,python,pandas,matplotlib,scipy,Python,Pandas,Matplotlib,Scipy,我正在编写一个Python脚本,它绘制了一个带有x标记的烛台图表,表示烛台的峰值。使用的数据是使用Oanda API提供的csv文件中的pandas.read_csv()读取的一系列美元/日元汇率。pandas.DataFrame.head()的结果如下所示: time close open high low volume 0 2016/08/19 06:00:00 100.256 99.919 100.471

我正在编写一个Python脚本,它绘制了一个带有x标记的烛台图表,表示烛台的峰值。使用的数据是使用Oanda API提供的csv文件中的
pandas.read_csv()
读取的一系列美元/日元汇率。pandas.DataFrame.head()的结果如下所示:

                  time    close     open     high      low  volume
0  2016/08/19 06:00:00  100.256   99.919  100.471   99.887   30965
1  2016/08/22 06:00:00  100.335  100.832  100.944  100.221   32920
2  2016/08/23 06:00:00  100.253  100.339  100.405   99.950   26069
3  2016/08/24 06:00:00  100.460  100.270  100.619  100.104   22340
4  2016/08/25 06:00:00  100.546  100.464  100.627  100.314   17224
虽然烛台图表本身显示正确(尽管它需要一些搜索),但我没有在上面看到任何标记

我期望的是类似于上显示的示例图形输出,只是它是烛台图而不是折线图

这是我的密码:

import sys
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import find_peaks
import mpl_finance

df = pd.read_csv(sys.argv[1])

opens = df['open']
highs = df['high']
lows = df['low']
closes = df['close']
indices = find_peaks(highs)[0]

fig = plt.figure(figsize=(12, 4))
ax1 = fig.add_subplot(1, 1, 1)

mpl_finance.candlestick2_ohlc(ax1, opens, highs, lows, closes, width=4, colorup='k', colordown='r', alpha=0.75)
ax1.plot(x=indices, y=[highs[j] for j in indices], fmt="x", label="peak highs")

ax1.grid()

plt.show()
我怀疑是ax1.plot()的x或y参数为空,使用pdb调试器时会显示该参数:

-> ax1.plot(x=indices, y=[highs[j] for j in indices], fmt="x", label="peak highs")
(Pdb) indices
array([  1,  10,  15,  18,  23,  25,  29,  34,  39,  47,  50,  59,  66,
        70,  74,  76,  78,  81,  84,  87,  92,  95,  99, 101, 107, 113,
       118, 126, 130, 138, 143, 145, 158, 161, 164, 170, 172, 176, 182,
       186, 196, 203, 208, 215, 220, 222, 226, 230, 233, 237, 241, 246,
       248, 256, 261, 263, 267, 282, 286, 290, 293, 296, 304, 306, 308,
       310, 313, 316, 322, 331, 336, 342, 349, 352, 359, 367, 369, 373,
       378, 382, 391, 395, 400, 403, 405, 411, 416, 422, 425, 428, 438,
       441, 444, 447, 450, 454, 459, 466, 471, 473, 477, 485, 493, 497],
      dtype=int32)
(Pdb) [highs[j] for j in indices]
[100.944, 104.33, 103.07, 103.367, 102.79799999999999, 101.258, 101.851, 104.17399999999999, 104.64299999999999, 104.882, 105.544, 106.95700000000001, 111.375, 113.911, 114.837, 114.78399999999999, 114.415, 116.134, 118.676, 118.251, 117.822, 118.624, 117.54299999999999, 116.89, 115.634, 115.38600000000001, 113.538, 114.962, 113.787, 114.765, 115.512, 115.2, 112.213, 111.48, 111.587, 109.23299999999999, 109.5, 111.79, 113.05799999999999, 114.39299999999999, 112.135, 111.721, 110.823, 111.8, 112.47399999999999, 112.935, 113.696, 114.505, 113.583, 112.429, 112.21600000000001, 110.99, 111.05799999999999, 110.95700000000001, 109.833, 109.85600000000001, 110.678, 112.72399999999999, 113.264, 113.20200000000001, 113.446, 112.834, 113.589, 114.10700000000001, 114.25, 114.462, 114.288, 114.742, 113.91799999999999, 111.70100000000001, 113.095, 113.758, 113.64399999999999, 113.398, 113.39299999999999, 111.49, 111.23200000000001, 109.77799999999999, 110.491, 109.79, 107.912, 107.685, 106.47, 107.06200000000001, 107.305, 106.65, 107.01799999999999, 107.499, 107.405, 107.788, 109.552, 110.044, 109.406, 110.02600000000001, 110.461, 111.40299999999999, 109.84899999999999, 110.275, 110.85799999999999, 110.91, 110.765, 111.14399999999999, 112.80799999999999, 113.18700000000001]

有人能给我一个可能的解决方案或解释原因吗?

我没有时间进行彻底的测试,但是如果你只绘制没有烛台的峰值会发生什么?如果你想改变峰值的格式,使它们更清晰(例如
fmt='go-'
)@DizietAsahi,我尝试了这两种方法,但仍然看不到标记。前者给了我一个只有轴、标签和网格的空图表,而后者生成了一个普通的烛台图表。