数据可视化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')


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

样式美化(matplotlib.pyplot.style.use)

使用matplotlib自带的几种美化样式,就可以很轻松的对生成的图形进行美化。 可以使用matplotlib.pyplot.style.available获取所有的美化样式 #!/usr/bin/p...
  • You_are_my_dream
  • You_are_my_dream
  • 2016年12月05日 13:59
  • 4013

数据分析-文件中CSV分析和matplotlib的一些应用

import matplotlib.pyplot as plt import csv x = [] y = [] with open('data.csv','r') as csvfile...
  • juezhanangle
  • juezhanangle
  • 2016年12月27日 21:36
  • 1136

Python 数据科学入门教程:Matplotlib

Matplotlib 入门教程 来源:Introduction to Matplotlib and basic line 译者:飞龙 协议:CC BY-NC-SA 4.0 ...
  • wizardforcel
  • wizardforcel
  • 2017年01月13日 11:45
  • 18753

Matplotlib 入门教程

第一章 Matplotlib 简介 欢迎阅读 Python 3+ Matplotlib 系列教程。 在本系列中,我们将涉及 Matplotlib 数据可视化模块的多个方面。 Matplotlib...
  • ff_smile
  • ff_smile
  • 2017年09月25日 14:22
  • 75

数据可视化——Matplotlib模块入门(一)

最近想学习一下用python语言进行数据分析与挖掘,而对于数据挖掘而言前期对数据的分析十分重要,而数据可视化有助于我们对数据的更深入直观的认识,因此打算先学习一下用python可视化数据的知识。 一、...
  • u014607457
  • u014607457
  • 2016年04月27日 12:12
  • 3595

数据可视化-Python之Matplotlib

数据可视化可以说是数据挖掘与结果展示很有力的工具。 程序绘图可以得到比较个性化的图像,而且易于大量生产大量的图像。但是对于绘图来书,最为重要的是之前额数据预处理。个人比较喜欢的绘图工具平台有R语言的...
  • theking_1991
  • theking_1991
  • 2014年03月12日 20:31
  • 1680

fmt 国际化 日期 数字 本地环境 字符编码 本地资源

转载自 点击打开链接 JSTL 中 fmt 的说明 博客分类:  JSP jstlfmt    看到 I18N 就应该想到知识“国际化”, I18N ...
  • daisyleedq
  • daisyleedq
  • 2016年05月12日 11:23
  • 648

Matplotlib入门教程

Matplotlib 入门教程
  • Sunny_csdn11
  • Sunny_csdn11
  • 2017年12月16日 14:31
  • 66

数据可视化matplotlib的应用

1.plot折线图:     import matplotlib.pyplot as plt x = [1,2,3] y = [5,7,4] x2 = [1,2,3] y2 =[10,14,12]...
  • juezhanangle
  • juezhanangle
  • 2016年12月29日 16:00
  • 249

Python科学计算数据可视化模块-Matplotlib

Matplotlibpython科学计算系列 matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图。而且也可以方便地将它作为绘图...
  • baibaibai66
  • baibaibai66
  • 2016年04月27日 14:13
  • 2991
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据可视化matplotlib的应用(四)
举报原因:
原因补充:

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