Wan*_*erd 14 python error-handling matplotlib
好吧我认为matplotlib已经下载但是我的新脚本出现了这个错误:
/usr/lib64/python2.6/site-packages/matplotlib/backends/backend_gtk.py:621: DeprecationWarning: Use the new widget gtk.Tooltip
self.tooltips = gtk.Tooltips()
Traceback (most recent call last):
File "vector_final", line 42, in <module>
plt.hist(data, num_bins)
File "/usr/lib64/python2.6/site-packages/matplotlib/pyplot.py", line 2008, in hist
ret = ax.hist(x, bins, range, normed, weights, cumulative, bottom, histtype, align, orientation, rwidth, log, **kwargs)
File "/usr/lib64/python2.6/site-packages/matplotlib/axes.py", line 7098, in hist
w = [None]*len(x)
TypeError: len() of unsized object
Run Code Online (Sandbox Code Playgroud)
我的代码是:#!/ usr/bin/python
l=[]
with open("testdata") as f:
line = f.next()
f.next()# skip headers
nat = int(line.split()[0])
print nat
for line in f:
if line.strip():
if line.strip():
l.append(map(float,line.split()[1:]))
b = 0
a = 1
for b in range(53):
for a in range(b+1,54):
import operator
import matplotlib.pyplot as plt
import numpy as np
vector1 = (l[b][0],l[b][1],l[b][2])
vector2 = (l[a][0],l[a][1],l[a][2])
x = vector1
y = vector2
vector3 = list(np.array(x) - np.array(y))
dotProduct = reduce( operator.add, map( operator.mul, vector3, vector3))
dp = dotProduct**.5
print dp
data = dp
num_bins = 200 # <- number of bins for the histogram
plt.hist(data, num_bins)
plt.show()
Run Code Online (Sandbox Code Playgroud)
但是给我错误的代码是我添加的新增内容,这是最后一部分,转载如下:
data = dp
num_bins = 200 # <- number of bins for the histogram
plt.hist(data, num_bins)
plt.show()
Run Code Online (Sandbox Code Playgroud)
小智 34
你知道如何制作200个均匀分隔的箱子,并让你的程序将数据存储在适当的箱子里吗?
例如,您可以将NumPy arange用于固定的bin大小(或Python的标准范围对象),将NumPy linspace用于均匀分布的bin.以下是matplotlib画廊中的2个简单示例
import numpy as np
import random
from matplotlib import pyplot as plt
data = np.random.normal(0, 20, 1000)
# fixed bin size
bins = np.arange(-100, 100, 5) # fixed bin size
plt.xlim([min(data)-5, max(data)+5])
plt.hist(data, bins=bins, alpha=0.5)
plt.title('Random Gaussian data (fixed bin size)')
plt.xlabel('variable X (bin size = 5)')
plt.ylabel('count')
plt.show()
Run Code Online (Sandbox Code Playgroud)

import numpy as np
import math
from matplotlib import pyplot as plt
data = np.random.normal(0, 20, 1000)
bins = np.linspace(math.ceil(min(data)),
math.floor(max(data)),
20) # fixed number of bins
plt.xlim([min(data)-5, max(data)+5])
plt.hist(data, bins=bins, alpha=0.5)
plt.title('Random Gaussian data (fixed number of bins)')
plt.xlabel('variable X (20 evenly spaced bins)')
plt.ylabel('count')
plt.show()
Run Code Online (Sandbox Code Playgroud)

如何制作 200 个均匀分布的 bin,并让您的程序将数据存储在适当的 bin 中?
接受的答案使用np.arange和手动创建 200 个 bin np.linspace,但 matplotlib 已经自动执行此操作:
plt.hist本身返回计数和垃圾箱counts, bins, _ = plt.hist(data, bins=200)
Run Code Online (Sandbox Code Playgroud)
或者,如果您在绘图之前需要垃圾箱:
np.histogram和plt.stairscounts, bins = np.histogram(data, bins=200)
plt.stairs(counts, bins, fill=True)
Run Code Online (Sandbox Code Playgroud)
pd.cut和plt.hist_, bins = pd.cut(data, bins=200, retbins=True)
plt.hist(data, bins)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
61243 次 |
| 最近记录: |