我有一个包含此类数据的文件:
0 5 9250 20728 1000 1200 34000
-0.1 -0 0.0 0.1 0.2 0.3
我需要阅读它并相应地创建直方图: 第一线酒吧高 二线垃圾箱。
from matplotlib import pyplot
import numpy as np
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt
import string
x = []
y = []
for line in open('data.csv'):
values = line.strip(' ').split()
print(line.strip(' ').split())
x.append(float(values[0]))
y.append(float(values[1]))
plt.bar(y, x)
plt.xlabel('slack')
plt.ylabel('traces')
plt.title(r'Histogram of Slack')
# Tweak spacing to prevent clipping of ylabel
plt.savefig('igor.png')
尽管得到了他,我得到了这个:
答案 0 :(得分:1)
您正在读取第一行(x, y)
值,然后是第二行。您应该只将第一行读作x
值,将第二行读作y
值,例如:
from matplotlib import pyplot
import numpy as np
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt
import string
with open('barplt.txt') as infile:
x = [float(value) for value in infile.readline().strip().split()]
y = [float(value) for value in infile.readline().strip().split()]
plt.bar(y, x, width=0.1)
plt.xlabel('slack')
plt.ylabel('traces')
plt.title(r'Histogram of Slack')
# Tweak spacing to prevent clipping of ylabel
plt.savefig('igor.png')
此外,您的示例数据中有7个条形高度,只有6个bin位置(2个位置为0)。除非我误解了你想要的东西。 请注意,我已明确将条宽设置为0.1。