使用python matplotlib创建甘特图

发布于 2021-01-29 14:09:45

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列是停止时间。

关注者
0
被浏览
208
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    如果我对您的理解正确,则希望在第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))
    

    结果输出



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看