matplotlib绘制股票历史分时走势不显示非交易时间

把日期转换成字符串做x轴是极其不理想的,目前可行的是将时间映射成0,1,2,3…n,然后在显示tick的时候,将它格式转化为时间格式即可。

from numpy import clip
from pandas import DataFrame
import time
from matplotlib.ticker import FuncFormatter

# 这是我要在坐标轴上显示的数据,datetime为x轴,value为y轴。
df = DataFrame([['2010-01-02 12:30:00',1],[...],['2012-03-30 05:30:00']],
		columns=['datetime','value'])
		
# 转为timestamp
df.datetime = df.datetime.apply(lambda x:time.mktime(x.timetuple())

# 这个函数是用来把x轴分成n个从0~n的数值并返回该点应该显示什么格式的数据
def func(x,pos=None):
	# 这个函数写法固定,来自FuncFormatter的调用函数__call__
	index = clip(int(x+0.5),0,size-1)
	# timestamp转为字符串
	return time.strftime('%Y-%m-%d %H:%M%S',time.localtime(df.datetime.iloc[i]))

axes.plot(df.datetime.values,df.value.values)

axes.xaxis.set_major_formatter(FuncFormatter(func))  #这里就是将日期分成数值,tick显示就是格式化输出的

如果想要把多种市场不同开盘时间的数据在一个axes上显示,那么必须把时间固定下来,可定位
9:00-12:00, 13:00-16:00,

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值