重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
# -*- coding:utf-8 -*-
企业建站必须是能够以充分展现企业形象为主要目的,是企业文化与产品对外扩展宣传的重要窗口,一个合格的网站不仅仅能为公司带来巨大的互联网上的收集和信息发布平台,创新互联公司面向各种领域:服务器租用等成都网站设计、成都全网营销推广解决方案、网站设计等建站排名服务。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.dates import DateFormatter, WeekdayLocator, DayLocator, MONDAY
from matplotlib.finance import quotes_historical_yahoo_ohlc, candlestick_ohlc
#从雅虎财经获取历史行情
date1 = (2017, 1, 1)
date2 = (2017, 4, 30)
quotes = quotes_historical_yahoo_ohlc('600000.ss', date1, date2)
if len(quotes) == 0:
raise SystemExit
#创建一个子图
fig, ax = plt.subplots()
fig.subplots_adjust(bottom=0.2)
#设置主要刻度和显示格式
mondays = WeekdayLocator(MONDAY)
mondaysFormatter = DateFormatter('%Y-%m-%d')
ax.xaxis.set_major_locator(mondays)
ax.xaxis.set_major_formatter(mondaysFormatter)
#设置次要刻度和显示格式
alldays = DayLocator()
alldaysFormatter = DateFormatter('%d')
ax.xaxis.set_minor_locator(alldays)
#ax.xaxis.set_minor_formatter(alldaysFormatter)
#设置x轴为日期
ax.xaxis_date()
ax.autoscale_view()
#X轴刻度文字倾斜45度
plt.setp(plt.gca().get_xticklabels(), rotation=45, horizontalalignment='right')
candlestick_ohlc(ax, quotes, width=0.6, colorup='r', colordown='g')
ax.grid(True)
plt.title('600000')
plt.show()
不管是对量化分析师还是普通的投资者来说,K线图(蜡烛图)都是一种很经典、很重要的工具。在K线图中,它会绘制每天的最高价、最低价、开盘价和收盘价,这对于我们理解股票的趋势以及每天的多空对比很有帮助。
一般来说,我们会从各大券商平台获取K线图,但是这种情况下获得的K线图往往不能灵活调整,也不能适应复杂多变的生产需求。因此我们有必要学习一下如何使用Python绘制K线图。
需要说明的是,这里mpl_finance是原来的matplotlib.finance,但是现在独立出来了(而且好像没什么人维护更新了),我们将会使用它提供的方法来绘制K线图;tushare是用来在线获取股票数据的库;matplotlib.ticker中有个FuncFormatter()方法可以帮助我们调整坐标轴;matplotlib.pylab.date2num可以帮助我们将日期数据进行必要的转化。
我们以上证综指18年9月份以来的行情为例。
我们先使用mpl_finance绘制一下,看看是否一切正常。
可以看到,所有的节假日包括周末,在这里都会显示为空白,这对于我们图形的连续性非常不友好,因此我们要解决掉他们。
可以看到,空白问题完美解决,这里我们解释一下。由于matplotlib会将日期数据理解为 连续数据 ,而连续数据之间的间距是有意义的,所以非交易日即使没有数据,在坐标轴上还是会体现出来。连续多少个非交易日,在坐标轴上就对应了多少个小格子,但这些小格子上方并没有相应的蜡烛图。
明白了它的原理,我们就可以对症下药了。我们可以给横坐标(日期)传入连续的、固定间距的数据,先保证K线图的绘制是连续的;然后生成一个保存有正确日期数据的列表,接下来,我们根据坐标轴上的数据去取对应的正确的日期,并替换为坐标轴上的标签即可。
上边format_date函数就是这个作用。由于前边我们给dates列生成了从0开始的序列连续数据,因此我们可以直接把它当作索引,从真正的日期列表里去取对应的数据。在这里我们要使用matplotlib.ticker.FuncFormattter()方法,它允许我们指定一个格式化坐标轴标签的函数,在这个函数里,我们需要接受坐标轴的值以及位置,并返回自定义的标签。
你学会了吗?
当然,一个完整的K线图到这里并没有结束,后边我们会考虑加入均线、成交量等元素,感兴趣的同学欢迎关注哦!
import matplotlib.pyplot as plt
from matplotlib.dates import DateFormatter, WeekdayLocator, DayLocator, MONDAY,YEARLY
from matplotlib.finance import quotes_historical_yahoo_ohlc, candlestick_ohlc
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
ticker = '600028' # 600028 是"中国石化"的股票代码
ticker += '.ss' # .ss 表示上证 .sz表示深证
date1 = (2015, 8, 1) # 起始日期,格式:(年,月,日)元组
date2 = (2016, 1, 1) # 结束日期,格式:(年,月,日)元组
mondays = WeekdayLocator(MONDAY) # 主要刻度
alldays = DayLocator() # 次要刻度
#weekFormatter = DateFormatter('%b %d') # 如:Jan 12
mondayFormatter = DateFormatter('%m-%d-%Y') # 如:2-29-2015
dayFormatter = DateFormatter('%d') # 如:12
quotes = quotes_historical_yahoo_ohlc(ticker, date1, date2)
if len(quotes) == 0:
raise SystemExit
fig, ax = plt.subplots()
fig.subplots_adjust(bottom=0.2)
ax.xaxis.set_major_locator(mondays)
ax.xaxis.set_minor_locator(alldays)
ax.xaxis.set_major_formatter(mondayFormatter)
#ax.xaxis.set_minor_formatter(dayFormatter)
#plot_day_summary(ax, quotes, ticksize=3)
candlestick_ohlc(ax, quotes, width=0.6, colorup='r', colordown='g')
ax.xaxis_date()
ax.autoscale_view()
plt.setp(plt.gca().get_xticklabels(), rotation=45, horizontalalignment='right')
ax.grid(True)
plt.title('中国石化 600028')
plt.show()
使用matplotlib模块,相关API请查看网页链接
只要你是个图,它就能给你画出来。
希望可以帮到你
现在几乎所有的大网站都在主要的栏目 做了防爬行的处理。 象这样的还算是简单的。 大不了你分析一下JS。 如果不想分析JS。就麻烦 些。 你安装一个pyqt,里面有一个qtbrowser, 你可以驱动这个浏览器去爬行。要几百行代码才能搞定。怎么用Python画5分钟K线图
在这里提了一个自问自答的问题来推广一种十分优雅的数据可视化工具,R的ggplot2包。其实我自己现在主要在使用Python和Pandas和Numpy工作,ggplot2应该是我留守在R里面最大的理由之一~
在介绍ggplot2之前,我首先来介绍一下作者Hadley Wickham。Hadley (Rice University Department of Statistics : Faculty)
从统计学名校Iowa State University拿到了自己的Ph. D,其博士论文Practical tools for
exploring data and models 就是关于数据可视化和探索性数据分析的,现任Rice University的Adjunct
Assistant Professor 和R的著名IDE
RStudio的首席科学家。Hadley在R语言用户中具有极高的声望。R的基础版本其实是不太好用的,但是Hadley的一系列优秀作品极大地改进了
R语言。今年五月在北京召开的R语言会议,好多人都争相和Hadley合影,可见Hadley的魅力与声望非同一般。Hadley开发一个package
的时候会先开发一个版本,如果他觉得不够好又升级了,就会发一个新版本,名字变成旧名字后面加上数字2。所以我们就有了reshape2和
ggplot2。
ggplot2基于Leland Wilkinson在Grammar of Graphics(图形的语法)中提出的理论,取首字母缩写再加上plot,于是得名ggplot。按照《图形的语法》一书中的观点,一张统计图形就是从数据到点、线或方块等几何对象的颜色、形状或大小等图形属性的一个映射,其中还可能包含对数据进行统计变换(如求均值或方差),最后将这个映射绘制在一定的坐标系中就得到了我们需要的图形。图中可能还有分面,
就是生成关于数据的不同子集的图形。使用ggplot2绘图的过程就是选择合适的几何对象、图形属性和统计变换来充分暴露数据中所含有的信息的过程。
ggplot2需要一定的时间去入门学习,但是当你掌握了ggplot2中图形的语法的时候,我相信你会感受到这套语法的优雅。
在接下来的部分,我假定读者已经对R语言有了基本的了解,我将不会介绍DataFrame等基本概念。
安装ggplot2和安装其他的R包没有差别,在R的console里面运行install.packages("ggplot2") 一句就可以了,如果你使用RStudio,也可以在Package列表那里用鼠标去安装。
先来介绍一些ggplot2中的基本概念,括号里面对应的是ggplot2中为这种属性赋值的时候需要使用的参数名
图形属性(aes) 横纵坐标、点的大小、颜色,填充色等
几何对象(geom_) 上面指定的图形属性需要呈现在一定的几何对象上才能被我们看到,这些承载图形属性的对象可能是点,可能是线,可能是bar
统计变换 (stat_) 比如求均值,求方差等,当我们需要展示出某个变量的某种统计特征的时候,需要用到统计变换