1. 程式人生 > >實用程式碼Python(七)甘特圖畫法

實用程式碼Python(七)甘特圖畫法

程式碼(gatt.py

def gatt(m, job, t):
	"""甘特圖
	m機器集
	job工序順序集
	t時間集
	"""
	for j in range(len(m)):  # 工序j
		i = m[j] - 1  # 機器編號i
		if j == 0:
			plt.barh(i, t[j])
			plt.text(np.sum(t[:j + 1]) / 8, i, 'J%s\nT%s' % ((job[j]), t[j]), color="white", size=8)
		else:
			plt.barh(i, t[j], left=(np.sum(t[:j])))
			plt.text(np.sum(t[:j]) + t[j] / 8, i, 'J%s\nT%s' % ((job[j]), t[j]), color="white", size=8)
	plt.yticks(np.arange(max(m)), np.arange(1, max(m) + 1))

程式碼(test.py

from gatt import gatt, np, plt

if __name__ == "__main__":
	"""測試程式碼"""
	m = np.random.randint(1, 7, 15)  # 生成工序所在機器編號
	job = np.arange(1, 16)  # 生成工序編號
	np.random.shuffle(job)
	t = np.random.randint(18, 25, 15)  # 生成工序時間
	gatt(m, job, t)
	plt.savefig("test.png", dpi=800)
	plt.show()

測試

1