使用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
我需要为列1提供2种颜色。对于y轴,选择列0,对于x轴,请选择列2和3。对于每一行,应绘制一条线。第2列是开始时间,第3列是停止时间。
-
如果我对您的理解正确,则希望在第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))