使用python matplotlib创建甘特图

时间:2013-08-05 20:07:42

标签: python matplotlib

如何使用matplotlib绘制包含该数据的图表。问题是可视化从第2列到第3列的距离。最后它应该看起来像一个时间图。

0   0    0.016   19.833
1   0   19.834   52.805
2   0   52.806   84.005
5   0   84.012  107.305
8   0  107.315  128.998
10  0  129.005  138.956
11  0  138.961  145.587
13  0  145.594  163.863
15  0  163.872  192.118
16  0  192.127  193.787
17  0  193.796  197.106
20  0  236.099  246.223
25  1   31.096   56.180
27  1   58.097   64.857
28  1   64.858   66.494
29  1   66.496   89.908
31  1   89.918  111.606
34  1  129.007  137.371
35  1  137.372  145.727
39  1  176.097  209.461
42  1  209.476  226.207
44  1  226.217  259.317
46  1  259.329  282.488
47  1  282.493  298.905

我需要2种颜色用于第1列。对于y轴,选择第0列,对于x轴,第2列和第3列是重要的。对于每一行,应绘制一条线。第2列是开始时间,第3列是停止时间。

2 个答案:

答案 0 :(得分:13)

如果我理解正确,你想绘制第3和第4列的x值之间的水平线,y值等于第0列。在给定的y值下绘制水平线在两个x值之间,您可以使用hlines。我相信下面的代码是一种可能的解决方案。

import numpy as np
import matplotlib.pyplot as plt

# Read data from file into variables
y, c, x1, x2 = np.loadtxt('data.txt', unpack=True)

# Map value to color
color_mapper = np.vectorize(lambda x: {0: 'red', 1: 'blue'}.get(x))

# Plot a line for every line of data in your file
plt.hlines(y, x1, x2, colors=color_mapper(c))

The resulting output

答案 1 :(得分:1)

例如,您可以使用numpy.loadtxt阅读文本文件,然后使用matplotlib绘制文本文件。例如:

import numpy as np
import matplotlib.pyplot as plt

x, y = np.loadtxt('file.txt', usecols=(2,3), unpack=True)
plt.plot(x,y)    

您应该看到matplotlib documentation了解更多选项。

相关问题