数据可视化matplotlib的应用(四)

原创 2017年01月03日 00:05:56

创建子plot:

import random
import matplotlib.pyplot as plt
from matplotlib import style

style.use('fivethirtyeight')

fig = plt.figure()

def create_plots():
    xs = []
    ys = []

    for i in range(10):
        x = i
        y = random.randrange(10)

        xs.append(x)
        ys.append(y)
    return xs, ys
ax1 = fig.add_subplot(221)   #通过fig添加子plot(221)解释:第一个参数是行,第二个参数是列,
ax2 = fig.add_subplot(222)   #第三个参数起点。
ax3 = fig.add_subplot(212)

x, y =create_plots()
ax1.plot(x,y)

x, y =create_plots()
ax2.plot(x,y)

x, y =create_plots()
ax3.plot(x,y)

plt.show()


通过plt.subplot2grid添加子:

import random
import matplotlib.pyplot as plt
from matplotlib import style

style.use('fivethirtyeight')

fig = plt.figure()

def create_plots():
    xs = []
    ys = []

    for i in range(10):
        x = i
        y = random.randrange(10)

        xs.append(x)
        ys.append(y)
    return xs, ys
ax1 = plt.subplot2grid((6,1),(0,0),rowspan=1, colspan=1)   #第一个参数(6,1)表示行和列,第二个参数(0,0)坐标
ax2 = plt.subplot2grid((6,1),(1,0),rowspan=4, colspan=1)   #起始值,第三个参数rowspan表示占的行数,第四
ax3 = plt.subplot2grid((6,1),(5,0),rowspan=1, colspan=1)   #个参数colspan表示列占。

x, y =create_plots()
ax1.plot(x,y)

x, y =create_plots()
ax2.plot(x,y)

x, y =create_plots()
ax3.plot(x,y)

plt.show()


3.再次应用子plot

import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import matplotlib.ticker as mticker
from matplotlib.finance import candlestick_ohlc
from matplotlib import style

import numpy as np
import urllib
import datetime as dt

style.use('fivethirtyeight')
print(plt.style.available)

print(plt.__file__)

def bytespdate2num(fmt, encoding='utf-8'):
    strconverter = mdates.strpdate2num(fmt)
    def bytesconverter(b):
        s = b.decode(encoding)
        return strconverter(s)
    return bytesconverter

def graph_data(stock):
    fig = plt.figure()
    ax1 = plt.subplot2grid((6,1), (0,0),rowspan=1,colspan=1)
    plt.title(stock)
    ax2 = plt.subplot2grid((6,1), (1,0),rowspan=4,colspan=1)
    plt.xlabel('Date')
    plt.ylabel('Price')
    ax3 = plt.subplot2grid((6,1), (5,0),rowspan=1,colspan=1)
    
    stock_price_url = 'http://chartapi.finance.yahoo.com/instrument/1.0/'+stock+'/chartdata;type=quote;range=1m/csv'
    source_code = urllib.request.urlopen(stock_price_url).read().decode()
    stock_data = []
    split_source = source_code.split('\n')
    for line in split_source:
        split_line = line.split(',')
        if len(split_line) == 6:
            if 'values' not in line and 'labels' not in line:
                stock_data.append(line)
    
    date, closep, highp, lowp, openp, volume = np.loadtxt(stock_data,
                                                          delimiter=',',
                                                          unpack=True,
                                                          converters={0: bytespdate2num('%Y%m%d')})
    x = 0
    y = len(date)
    ohlc = []

    while x < y:
        append_me = date[x], openp[x], highp[x], lowp[x], closep[x], volume[x]
        ohlc.append(append_me)
        x+=1

    candlestick_ohlc(ax2, ohlc, width=0.4, colorup='#77d879', colordown='#db3f3f')
  
    for label in ax1.xaxis.get_ticklabels():
        label.set_rotation(45)

    ax2.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))
    ax2.xaxis.set_major_locator(mticker.MaxNLocator(10))
    ax2.grid(True)
    
    bbox_props = dict(boxstyle='round',fc='w', ec='k',lw=1)
    
    ax2.annotate(str(closep[-1]), (date[-1], closep[-1]),
                 xytext = (date[-1]+4, closep[-1]), bbox=bbox_props)
    
##    # Annotation example with arrow
##    ax1.annotate('Bad News!',(date[11],highp[11]),
##                 xytext=(0.8, 0.9), textcoords='axes fraction',
##                 arrowprops = dict(facecolor='grey',color='grey'))
##
##    
##    # Font dict example
##    font_dict = {'family':'serif',
##                 'color':'darkred',
##                 'size':15}
##    # Hard coded text 
##    ax1.text(date[10], closep[1],'Text Example', fontdict=font_dict)
   
    #plt.legend()
    plt.subplots_adjust(left=0.11, bottom=0.24, right=0.90, top=0.90, wspace=0.2, hspace=0)
    plt.show()

graph_data('EBAY')


更多的数据指示:

import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import matplotlib.ticker as mticker
from matplotlib.finance import candlestick_ohlc
from matplotlib import style
import numpy as np
import urllib
import datetime as dt

style.use('fivethirtyeight')
print(plt.style.available)

print(plt.__file__)

MA1 = 10     #计算moving_average时,设置的参数
MA2 = 30     #MA就是moving_average的缩写

def moving_average(values, window):
    weights = np.repeat(1.0, window)/window #设置参数repeat重复表示参数
    smas = np.convolve(values, weights, 'valid') #参数按照权重卷积运算
    return smas

def high_minus_low(highs, lows): #计算highs和lows的差值
    return highs-lows

def bytespdate2num(fmt, encoding='utf-8'):
    strconverter = mdates.strpdate2num(fmt)
    def bytesconverter(b):
        s = b.decode(encoding)
        return strconverter(s)
    return bytesconverter

def graph_data(stock):

    fig = plt.figure()
    ax1 = plt.subplot2grid((6,1), (0,0), rowspan=1, colspan=1)
    plt.title(stock)
    ax2 = plt.subplot2grid((6,1), (1,0), rowspan=4, colspan=1)
    plt.xlabel('Date')
    plt.ylabel('Price')
    ax3 = plt.subplot2grid((6,1), (5,0), rowspan=1, colspan=1)
    
    stock_price_url = 'http://chartapi.finance.yahoo.com/instrument/1.0/'+stock+'/chartdata;type=quote;range=1y/csv'
    source_code = urllib.request.urlopen(stock_price_url).read().decode()
    stock_data = []
    split_source = source_code.split('\n')
    for line in split_source:
        split_line = line.split(',')
        if len(split_line) == 6:
            if 'values' not in line and 'labels' not in line:
                stock_data.append(line)
    
    date, closep, highp, lowp, openp, volume = np.loadtxt(stock_data,
                                                          delimiter=',',
                                                          unpack=True,
                                                          converters={0: bytespdate2num('%Y%m%d')})

    x = 0
    y = len(date)
    ohlc = []

    while x < y:
        append_me = date[x], openp[x], highp[x], lowp[x], closep[x], volume[x]
        ohlc.append(append_me)
        x+=1

    ma1 = moving_average(closep,MA1)
    ma2 = moving_average(closep,MA2)
    start = len(date[MA2-1:])

    h_l = list(map(high_minus_low, highp, lowp)) #计算出差值列表

    ax1.plot_date(date,h_l,'-') #画出差值的函数,在第一个子plot里面

    candlestick_ohlc(ax2, ohlc, width=0.4, colorup='#77d879', colordown='#db3f3f')
  
    for label in ax2.xaxis.get_ticklabels():
        label.set_rotation(45)

    ax2.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))
    ax2.xaxis.set_major_locator(mticker.MaxNLocator(10))
    ax2.grid(True)
    
    bbox_props = dict(boxstyle='round',fc='w', ec='k',lw=1)
    
    ax2.annotate(str(closep[-1]), (date[-1], closep[-1]),
                 xytext = (date[-1]+4, closep[-1]), bbox=bbox_props)

    ax3.plot(date[-start:], ma1[-start:])     #第三个图画出变化的图
    ax3.plot(date[-start:], ma2[-start:])

    plt.subplots_adjust(left=0.11, bottom=0.24, right=0.90, top=0.90, wspace=0.2, hspace=0)
    plt.show()

graph_data('EBAY')


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

[时间序列分析][4]--AR模型,MA模型,ARMA模型介绍

自相关和偏自相关的两个函数代码 AR模型 AR模型的定义 AR模型平稳性判别 第一个平稳的AR模型 第二个平稳的AR模型 非平稳的AR模型 AR模型的一些性质 MA模型 MA模型的定义 MA模型的可逆...
  • WMN7Q
  • WMN7Q
  • 2017年04月20日 22:30
  • 5065

从朴素贝叶斯分类器到贝叶斯网络(下)

贝叶斯网络(Bayesian Network)是一种用于表示变量间依赖关系的数据结构,有时它又被称为信念网络(Belief Network)或概率网络(Probability Network)。在统计...

TensotFlow 应用实例:06-使用matplotlib可视化训练过程

TensotFlow 应用实例:06-使用matplotlib可视化训练过程 本文是我在学习TensotFlow 的时候所记录的笔记,共享出来希望能够帮助一些需要的人。 import tensor...
  • iTaacy
  • iTaacy
  • 2017年07月30日 20:31
  • 149

Python进阶(四十)-数据可视化の使用matplotlib进行绘图

Python进阶(四十)-数据可视化の使用matplotlib进行绘图前言  matplotlib是基于Python语言的开源项目,旨在为Python提供一个数据绘图包。我将在这篇文章中介绍matpl...

Python数据可视化之Matplotlib基础

Python数据可视化之Matplotlib学习笔记 1、简介 Matplotlib是Python最著名的绘图库,它提供了一整套类似Matlab的API,非常适合交互式绘图。 它的文档相当完...

使用matplotlib.pyplot + xlrd + pandas使租房价格面积数据关系可视化

最近本想接触pandas,然而我发现自己在数据可视化方面能力的欠缺的,所以我要恶补这方面的知识才能继续学习更深入的数据分析知识。 而matplotlib是个强大的工具,大家可以参考http://ma...

Python数据可视化之Matplotlib学习笔记

Python数据可视化之Matplotlib学习笔记
  • Veahlin
  • Veahlin
  • 2016年07月18日 13:35
  • 1087

数据可视化(一)-Matplotlib简易入门

本节的数据来源:https://archive.ics.uci.edu/ml/datasets/Forest+Fires 原始数据展示(这张表记录了某个公园的火灾情况,X和Y代表的是坐标位置,are...

Python进阶(三十八)-数据可视化の利用matplotlib 进行折线图,直方图和饼图的绘制

Python进阶(三十八)-数据可视化の利用python进行折线图,直方图和饼图的绘制  我用10个国家某年的GDP来绘图,数据如下: labels = [‘USA’, ‘China’, ‘In...

【python数据挖掘课程】十一.Pandas、Matplotlib结合SQL语句可视化分析

这是非常好的一篇文章,可以认为是我做数据分析的转折点,为什么呢? 因为这是我做数据分析第一次引入SQL语句,然后爱不释手;结合SQL语句返回结果进行数据分析的效果真的很好,很多大神看到可能会笑话晚辈,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据可视化matplotlib的应用(四)
举报原因:
原因补充:

(最多只允许输入30个字)