【问题标题】:Create Gantt Plot with python matplotlib使用 python matplotlib 创建甘特图
【发布时间】:2013-08-06 16:03:11
【问题描述】:

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

【问题讨论】:

  • 你试过什么?如果您向我们展示您的尝试,您将在这里得到更好的答复,因为您现在的问题是“请为我做我的工作”。
  • 我是初学者,你是对的。但我尝试了很多次。绘图不是问题,但甘特图设计才是问题。对于甘特图设计,没有可用的示例。

标签: python matplotlib


【解决方案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 以获得更多选项。

【讨论】:

  • 我已经有了 Python 中的数据。第 2+ 3 列在 x 轴上。就像一个时间线。第 0 列是 y 轴
【解决方案2】:

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

【讨论】:

  • 这看起来已经很像甘特图了。如果你有更多的痛苦——比如学习 LaTeX——,试试LaTeX pgfgantt
  • 不错的包,但对大数字不灵活。数据 >300 它不适合一页。使用 \noindent\resizebox{\textwidth}{!} 缩放 tex 框后,无法读取轴标签。
猜你喜欢
  • 1970-01-01
  • 2017-09-08
  • 1970-01-01
  • 1970-01-01
  • 2016-09-26
  • 2016-11-02
  • 2020-12-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多