Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用sharex同步matplotlib子批次中的x轴_Python_Mongodb_Matplotlib_Charts - Fatal编程技术网

Python 使用sharex同步matplotlib子批次中的x轴

Python 使用sharex同步matplotlib子批次中的x轴,python,mongodb,matplotlib,charts,Python,Mongodb,Matplotlib,Charts,我刚刚开始用Python编写代码,目前正在使用matplotlib绘制图表,使用pandas进行数据分析,并使用MongoDB中的数据库处理金融数据。这可能是一个基本的问题,但是我已经回答了所有的问题,我还没有找到解决办法 我的数据集采用数据帧的形式: 指数|收盘|日期|高|低|开盘|成交量| 0 | 1259.95 | 2015-02-02 | 1295.00 | 1256.00 | 1280.00 | 59400| 1 | 1264.15 | 2015-02-03 | 1280.00 | 1

我刚刚开始用Python编写代码,目前正在使用matplotlib绘制图表,使用pandas进行数据分析,并使用MongoDB中的数据库处理金融数据。这可能是一个基本的问题,但是我已经回答了所有的问题,我还没有找到解决办法

我的数据集采用数据帧的形式:

指数|收盘|日期|高|低|开盘|成交量|

0 | 1259.95 | 2015-02-02 | 1295.00 | 1256.00 | 1280.00 | 59400|

1 | 1264.15 | 2015-02-03 | 1280.00 | 1255.65 | 1264.00 | 43100|

2 | 1267.85 | 2015-02-04 | 1288.95 | 1263.10 | 1273.20 | 41500|

代码块:

import matplotlib.dates as mdates
import pandas as pd
from matplotlib.finance import candlestick, volume_overlay
import matplotlib.pyplot as plt
from feed.get_data import get_ticker_data #simply gets data from yahoo into dataframe

    def candlestick_data_1(ticker, startdate, enddate):
    data = get_ticker_data(ticker, 'Open', 'High', 'Low', 'Close', 'Volume', startdate=startdate, enddate=enddate)
    print data
    data['Date'] = mdates.date2num(pd.to_datetime(data['Date']))
    dataAr = [tuple(x) for x in data[['Date', 'Open', 'Close', 'High', 'Low']].to_records(index=False)]
    fig = plt.figure()
    ax1 = plt.subplot(211)
    ax2 = plt.subplot(212)
    candlestick(ax1, dataAr, colorup='#00ff00', alpha=1.0)
    volume_overlay(ax2, data['Open'], data['Close'], data['Volume'])
    plt.show()
ax2 = plt.subplot(212, sharex=ax1)
当我不使用“sharex”时,图形绘制良好,但x轴不同步,如下所示:

然而,当我使用sharex时,图表会完全扭曲: 代码块:

import matplotlib.dates as mdates
import pandas as pd
from matplotlib.finance import candlestick, volume_overlay
import matplotlib.pyplot as plt
from feed.get_data import get_ticker_data #simply gets data from yahoo into dataframe

    def candlestick_data_1(ticker, startdate, enddate):
    data = get_ticker_data(ticker, 'Open', 'High', 'Low', 'Close', 'Volume', startdate=startdate, enddate=enddate)
    print data
    data['Date'] = mdates.date2num(pd.to_datetime(data['Date']))
    dataAr = [tuple(x) for x in data[['Date', 'Open', 'Close', 'High', 'Low']].to_records(index=False)]
    fig = plt.figure()
    ax1 = plt.subplot(211)
    ax2 = plt.subplot(212)
    candlestick(ax1, dataAr, colorup='#00ff00', alpha=1.0)
    volume_overlay(ax2, data['Open'], data['Close'], data['Volume'])
    plt.show()
ax2 = plt.subplot(212, sharex=ax1)

您的下方图表从-5到20。上图从735630到735660。现在,如果希望它们共享同一个轴,则该轴需要从-5运行到735660。在长度为735665的轴内,25或3个单位的相应数据范围显然不可观测。因此,如果您希望两个数据集共享同一个轴,您需要首先考虑它们的共同点,并相应地调整数据。谢谢您的评论。在这两种情况下,x轴实际上都是日期,尽管我没有将它们转换为日期,而是将它们保留为浮点数。即使在这种情况下,因为它是一个数据帧对象,两个对象的y轴限制也是不同的,这很好。X轴数据点是完全相同的。(它们是日期-浮动等值总是正的)你的下方图表从-5到20。上图从735630到735660。现在,如果希望它们共享同一个轴,则该轴需要从-5运行到735660。在长度为735665的轴内,25或3个单位的相应数据范围显然不可观测。因此,如果您希望两个数据集共享同一个轴,您需要首先考虑它们的共同点,并相应地调整数据。谢谢您的评论。在这两种情况下,x轴实际上都是日期,尽管我没有将它们转换为日期,而是将它们保留为浮点数。即使在这种情况下,因为它是一个数据帧对象,两个对象的y轴限制也是不同的,这很好。X轴数据点是完全相同的。(它们是日期-浮动当量始终为正值)