如何使用Python的matplotlib在K线图x轴仅显示小时和分钟时间格式
解决K线图X轴仅显示时分格式的问题
下面是修复后可直接运行的代码:
import pandas as pd import numpy as np import datetime import matplotlib.pyplot as plt from matplotlib.dates import date2num import matplotlib.dates as mpl_dates from mplfinance.original_flavor import candlestick_ohlc # 可批量适配你的输入列表格式,此处以单条测试数据为例 input_list = ['17:00',355.750,567.05,147.00,146.99] # 仅解析时分时默认会补全1900-01-01的日期,统一固定日期避免后续显示干扰 time_val = date2num(datetime.datetime.strptime(input_list[0], "%H:%M")) data = np.array([time_val, input_list[1], input_list[2], input_list[3], input_list[4]]) data = data.reshape(1,5) data = pd.DataFrame(data, columns =['Date', 'High', 'Low', 'Open', 'Close']) ohlc = data.loc[:, ['Date', 'Open', 'High', 'Low', 'Close']] fig, ax = plt.subplots() candlestick_ohlc(ax, ohlc.values, width=0.005, colorup='green', colordown='red', alpha=0.8) # 核心修改1:设置时分格式渲染规则 date_format = mpl_dates.DateFormatter('%H:%M') ax.xaxis.set_major_formatter(date_format) # 核心修改2:指定X轴刻度定位规则,可根据你的数据时间间隔调整interval参数 # 若为小时级数据可替换为 mpl_dates.HourLocator(interval=1) ax.xaxis.set_major_locator(mpl_dates.MinuteLocator(interval=30)) # 单条数据场景可手动限制X轴范围,避免显示多余的无关刻度 ax.set_xlim(time_val - 2/24, time_val + 2/24) fig.autofmt_xdate() fig.tight_layout() plt.show()
修改说明
- 解决了默认日期干扰问题:仅传入时分做时间解析时,datetime会默认补全1900-01-01的日期,未限制X轴范围时自动生成的刻度可能附带日期信息,手动限制范围+指定定位器后仅会显示时分
- 新增X轴刻度定位规则:可根据实际数据的时间间隔调整
interval参数,比如15分钟粒度的数据设置interval=15即可 - 调整K线宽度适配:原代码0.01的宽度对应约14.4分钟,可根据数据间隔自行调整数值,避免K线过宽或过窄
内容的提问来源于stack exchange,提问作者Johnny
相关产品推荐
相关产品推荐

