0

我有一个包含此类数据的文件:

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')

尽管得到了 histo 我得到了这个: 直方图图像

4

1 回答 1

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。

条形图

于 2013-09-24T09:39:27.100 回答