Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.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绘图属性错误_Python_Pandas_Matplotlib_Charts - Fatal编程技术网

Python绘图属性错误

Python绘图属性错误,python,pandas,matplotlib,charts,Python,Pandas,Matplotlib,Charts,我用建议编辑了代码,目前收到了此错误回溯(最近一次呼叫,最后一次): 文件“C:\Users\Jonathan.HollowayMainPc\Documents\Inchimoku Kinko Hyo.py”,第111行,在 ichimoku_图表() 文件“C:\Users\Jonathan.HollowayMainPc\Documents\Inchimoku Kinko Hyo.py”,第97行,在ichimoku_图表中 facecolor='green',alpha=0.2,插值=Tru

我用建议编辑了代码,目前收到了此错误回溯(最近一次呼叫,最后一次): 文件“C:\Users\Jonathan.HollowayMainPc\Documents\Inchimoku Kinko Hyo.py”,第111行,在 ichimoku_图表() 文件“C:\Users\Jonathan.HollowayMainPc\Documents\Inchimoku Kinko Hyo.py”,第97行,在ichimoku_图表中 facecolor='green',alpha=0.2,插值=True) 文件“C:\Python27\lib\site packages\matplotlib\pyplot.py”,第2826行,填充 插值=插值,**kwargs) 文件“C:\Python27\lib\site packages\matplotlib\axes\u axes.py”,第4345行,填充 raise VALUERROR(“参数维度不兼容”) ValueError:参数维度不兼容

下面是我的代码,我不确定是什么引起的。任何帮助都将不胜感激

import urllib
import string
import sys
import matplotlib
import pandas as pd
import matplotlib.pyplot as plt
import pandas.io.data as web
import datetime
#from stooq_helper_functions import data_to_dataframe
stocks = []
#^ list of for stocks 
#for stock in stocks:
    #Everything gets tabbed here. 
stock = "ebay"

data = {'Close': [], 'High': [], 'Low': [], 'Open': [], 'Date':[], 'Volume':[]}
#^Above is done on each stock but only one for now to test. 
url = 'http://chartapi.finance.yahoo.com/instrument/1.0/'+stock+'/chartdata;type=quote;range=1y/csv'
page = urllib.urlopen(url)
for line in page:
    new_string = string.split(line, ',')
    if len(new_string) == 6:
        if new_string[0].isdigit() == True:
            #print new_string
            data[stock]= new_string
            todays_high = float(data[stock][2])
            todays_low = float(data[stock][3])
            todays_open = float(data[stock][4])
            todays_close = float(data[stock][1])
            todays_volume = data[stock][5]
            todays_date = data[stock][0]
            data['High'].append(todays_high)
            data['Low'].append(todays_low)
            data['Open'].append(todays_open)
            data['Date'].append(todays_date)
            data['Close'].append(todays_close)
            data['Volume'].append(todays_volume)

matplotlib.style.use('ggplot')


def ichimoku_chart():
    global data, stock
    # Prepare the data
    #pos = len(data) - days
    close_prices = pd.DataFrame(data['Close'])
    high_prices = pd.DataFrame(data['High'])
    low_prices = pd.DataFrame(data['Low'])
    data['Date'] = pd.to_datetime(data['Date'], format='%Y%m%d')
    # workaround, so matplotlib accepts date axis
    #data['Date'].set_index('Date')

    # Ichimoku chart components

    # 1. Tenkan-sen (Conversion Line): (9-period high + 9-period low)/2))
    period9_high = pd.rolling_max(high_prices, window=9)
    period9_low = pd.rolling_min(low_prices, window=9)
    tenkan_sen = (period9_high + period9_low) / 2
    data['tenkan_sen'] = tenkan_sen

    # 2. Kijun-sen (Base Line): (26-period high + 26-period low)/2))
    period26_high = pd.rolling_max(high_prices, window=26)
    period26_low = pd.rolling_min(low_prices, window=26)
    kijun_sen = (period26_high + period26_low) / 2
    data['kijun_sen'] = kijun_sen

    # 3. Senkou Span A (Leading Span A): (Conversion Line + Base Line)/2))
    # plotted 26 periods ahead
    senkou_span_a = ((tenkan_sen + kijun_sen) / 2).shift(26)
    data['senkou_span_a'] = senkou_span_a

    # 4. Senkou Span B (Leading Span B): (52-period high + 52-period low)/2))
    # plotted 22 periods ahead
    period52_high = pd.rolling_max(high_prices, window=52)
    period52_low = pd.rolling_min(low_prices, window=52)
    senkou_span_b = ((period52_high + period52_low) / 2).shift(22)
    data['senkou_span_b'] = senkou_span_b

    # 5. The most current closing price plotted 22 time periods behind
    chikou_span = close_prices.shift(-22)
    data['chikou_span'] = chikou_span

    #data = data[pos:]
    date_values = data['Date'].values

    fig = plt.figure()

    plt.plot_date(date_values, data['Close'], '-', linewidth=1.4, label='Close')
    plt.plot_date(date_values, data['tenkan_sen'], '-', label='Tenkan Sen')
    plt.plot_date(date_values, data['kijun_sen'], '-', label='Kijun Sen')
    plt.plot_date(date_values, data['senkou_span_a'], '-', linewidth=0)
    plt.plot_date(date_values, data['senkou_span_b'], '-', linewidth=0)
    plt.plot_date(date_values, data['chikou_span'], '-', label='Chikou Span')

    plt.fill_between(date_values, data['senkou_span_a'], data['senkou_span_b'],
                     where=data['senkou_span_a'] >= data['senkou_span_b'],
                     facecolor='green', alpha=0.2, interpolate=True)
    plt.fill_between(date_values, data['senkou_span_a'], data['senkou_span_b'],
                     where=data['senkou_span_a'] < data['senkou_span_b'],
                     facecolor='red', alpha=0.2, interpolate=True)

    fig.set_tight_layout(True)
    plt.legend(loc='upper left')
    plt.show()


#if __name__ == '__main__':
    #days = sys.argv[1]
    #stock = sys.argv[2]
    #ichimoku_chart(data_to_dataframe(stock + '.txt'), int(days))
ichimoku_chart()
导入urllib
导入字符串
导入系统
导入matplotlib
作为pd进口熊猫
将matplotlib.pyplot作为plt导入
将pandas.io.data作为web导入
导入日期时间
#从stooq_helper_函数将数据_导入_数据帧
股票=[]
#^存货清单
#对于库存:
#这里什么都有标签。
stock=“易趣”
数据={'Close':[],'High':[],'Low':[],'Open':[],'Date':[],'Volume':[]}
#^以上是对每只股票做的,但目前只有一只股票需要测试。
url='1〕http://chartapi.finance.yahoo.com/instrument/1.0/“+股票+”/图表数据;类型=报价;范围=1y/csv'
page=urllib.urlopen(url)
对于第页中的行:
new_string=string.split(行“,”)
如果len(新字符串)=6:
如果新字符串[0].isdigit()==True:
#打印新字符串
数据[库存]=新的\u字符串
todays_high=浮动(数据[股票][2])
todays_low=浮动(数据[股票][3])
今日公开=浮动(数据[股票][4])
今日收盘=浮动(数据[股票][1])
今日交易量=数据[库存][5]
todays_date=数据[库存][0]
数据['High'].追加(今天高)
数据['Low'].追加(今天低)
数据['Open'].追加(今天打开)
数据['Date'].追加(今天的日期)
数据['Close'].追加(今天关闭)
数据['Volume'].追加(今天的卷)
matplotlib.style.use('ggplot')
def ichimoku_图表():
全球数据、股票
#准备数据
#pos=len(数据)-天
关闭价格=pd.DataFrame(数据['close'])
高价格=pd.DataFrame(数据['high'])
低价格=pd.DataFrame(数据['low'])
数据['Date']=pd.to_datetime(数据['Date'],格式='%Y%m%d')
#解决方法,因此matplotlib接受日期轴
#数据['Date']。设置索引('Date')
#Ichimoku图表组件
# 1. Tenkan sen(转换线):(9周期高+9周期低)/2)
周期9高=pd滚动最大值(高价格,窗口=9)
周期9低=pd滚动最小值(低价格,窗口=9)
tenkan_sen=(第9周期高+第9周期低)/2
数据['tenkan_sen']=tenkan_sen
# 2. 基俊森(基线):(26周期高+26周期低)/2)
周期26高=pd滚动最大值(高价格,窗口=26)
周期26低=pd滚动最小值(低价格,窗口=26)
kijun_sen=(周期26_高+周期26_低)/2
数据['kijun_sen']=kijun_sen
# 3. 森口A跨(主A跨):(转换线+基线)/2)
#预测未来26个时期
森寇·斯潘·阿=(天干森+基俊森)/2.班次(26)
数据['senkou_span_a']=senkou_span_a
# 4. 森口B区(领先B区):(52期高+52期低)/2)
#提前22个周期
周期52\u高=pd.滚动最大值(高价格,窗口=52)
周期52低=pd滚动最小值(低价格,窗口=52)
senkou_span_b=((周期52_高+周期52_低)/2)。移位(22)
数据['senkou_span_b']=senkou_span_b
# 5. 最新收盘价落后22个时段
chikou_span=收盘价。移位(-22)
数据['chikou_span']=chikou_span
#数据=数据[位置:]
日期值=数据['date']。值
图=plt.图()
plt.plot_date(日期值,数据['Close'],'-',线宽=1.4,标签='Close')
plt.plot_date(日期值,数据['tenkan_sen'],'-',标签='tenkan sen')
plt.plot_date(日期值,数据['kijun_sen'],'-',标签='kijun sen')
plt.plot_date(日期值,数据['senkou_span_a'],'-',线宽=0)
plt.plot_date(日期值,数据['senkou_span_b'],'-',线宽=0)
plt.plot_date(日期值,数据['chikou_span'],'-',标签='chikou span')
请在(日期值、数据['senkou_span_a']、数据['senkou_span_b']之间填充,
其中=数据['senkou_span_a']>=数据['senkou_span_b'],
facecolor='green',alpha=0.2,插值=True)
请在(日期值、数据['senkou_span_a']、数据['senkou_span_b']之间填充,
其中=数据['senkou_span_a']
存在多个问题

  • url=url='1〕http://chartapi.finance.yahoo.com/instrument/1.0/“+股票+”/图表数据;类型=报价;范围=1年/csv'
    应为
    url='1http://chartapi.finance.yahoo.com/instrument/1.0/“+股票+”/图表数据;类型=报价;范围=1y/csv'
    ,即
    range=1y
    而不是
    range=1yr
    。否则将不返回任何数据
  • high_prices
    是一个列表,但是
    rolling_max
    需要一个
    DataFrame
    ()。尝试
    high\u prices=pd.DataFrame(数据['high'])
  • 即使解决了这两个问题,您的绘图功能仍然可以打印日期(日期值、数据['Close']、'-',线宽=1.4,label='Close') 将失败,因为
    close\u prices=data['close']
    将始终为空,因为没有数据写入
    data['close']
一些较小的问题:

  • todays\u volume=数据[
    
    >>> date_values.shape
    (252,)
    >>> data['senkou_span_a'].shape
    (252, 1)