直方图不绘图

时间:2015-06-30 01:09:57

标签: python matplotlib plot histogram

下午好,

我是新手。我试图绘制一个扩散返回的直方图,然而,matplotlib拒绝绘制直方图而没有相应的错误。你会这么好解释一下,我在代码中的错误在哪里。感谢。

import numpy as np
import pandas as pd
import pandas.io.data as web
import matplotlib.pyplot as plt

goog = web.DataReader('GOOG', data_source='google',
start='3/14/2009', end='4/14/2014')
goog.tail()
goog['Ret'] = ((goog['Close'] - goog['Close'].shift(1)) /
                goog['Close'].shift(1))*100


goog[['Close','Ret']].tail()

WY = web.DataReader('WY', data_source='google',
start='3/14/2009', end='4/14/2014')
WY.tail()
WY['Ret'] = ((WY['Close'] - WY['Close'].shift(1)) /WY['Close'].shift(1))*100
WY[['Close','Ret']].tail()

a=goog['Ret']
a = a[~np.isnan(a)]
b=WY['Ret']
b = b[~np.isnan(b)]

%matplotlib inline 


my_array = [i/m for i,m in zip(a, b)]


plt.hist(my_array, bins=25)
plt.grid(True)
plt.legend(loc=0)
plt.xlabel('value')
plt.ylabel('frequency')
plt.title('Histogram')

2 个答案:

答案 0 :(得分:1)

这是因为你的数组中有treeGrid.getEl().getScrollTop() 个值。

如果你阻止0分裂,你可以解决这个问题:

inf

或与:

my_array = [i/m for i,m in zip(a, b) if m!=0]

答案 1 :(得分:-1)

嗯,我不确定你想要绘图,但是看到你用两列压缩两个列表,然后你可以用hist()绘制它 您的代码中还有另一个错误我更改了第10行,goog['Ret']=((goog['Close'].shift(1)))

的第40行
plt.hist(a, bins=25)
plt.hist(b, bins=25)

此第40行的问题是参数my_array

{p> ab是您在my_array = [i/m for i,m in zip(a, b)]制作没有直方图标签的列表时的字典。

然后最后代码是:

import numpy as np
import pandas as pd
import pandas.io.data as web
import matplotlib.pyplot as plt

goog = web.DataReader('GOOG', data_source='google',
start='3/14/2009', end='4/14/2014')
goog.tail()
#print(goog['Ret'])
goog['Ret']=((goog['Close'].shift(1)))
#goog['Close'].shift(1))*100

#print(((goog['Close'].shift(1)),goog['Close'].shift(1))*100)
#print(((goog['Close'].shift(1))))#,goog['Close'].shift(1)))


goog[['Close','Ret']].tail()

WY = web.DataReader('WY', data_source='google',
start='3/14/2009', end='4/14/2014')
WY.tail()
WY['Ret'] = ((WY['Close'] - WY['Close'].shift(1)) /WY['Close'].shift(1))*100
WY[['Close','Ret']].tail()

a=goog['Ret']
a = a[~np.isnan(a)]
b=WY['Ret']
b = b[~np.isnan(b)]

#matplotlib inline 


my_array = [i/m for i,m in zip(a, b) if m!=0] # This works too

#print (a)
#print (b)


plt.hist(my_array, bins=25)
#plt.hist(a, bins=25)
#plt.hist(b, bins=25)
plt.grid(True)
plt.legend(loc=0)
plt.xlabel('value')
plt.ylabel('frequency')
plt.title('Histogram')
plt.show()

我真的希望这可以帮助你。

祝你好运,如果这有助于你不要忘记接受答案和/或投票。