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

實用程式碼Python(五)用Matplotlib畫甘特圖

說明

使用Matplotlib畫甘特圖,思想是使用條形圖繪製。
關鍵點,使用plt.barh(y,data,left=())
y是條形圖的位置,data是條形圖的大小,left是條形圖座標的距離。
案例如下。

測試程式碼

import matplotlib.pyplot as plt
import numpy as np

m=[1,2,1,2,2,3,2,1,3,2,3]
t=[5,6,9,2,4,5,4,2,3,5,6]
for i in range(len(m)):
	if m[i]==1:
		if i==0:
			plt.barh(0,t[i])
			plt.text(np.sum(t[:i+1])/4,0,'J%s'%(i+1),color="white")
		else:
			plt.barh(0,t[i],left=(np.sum(t[:i])))
			plt.text(np.sum(t[:i])+t[i]/4,0,'J%s'%(i+1),color="white")
	elif m[i]==2:
		if i==0:
			plt.barh(1,t[i])
			plt.text(np.sum(t[:i+1])/4,1,'J%s'%(i+1),color="white")
		else:
			plt.barh(1,t[i],left=(np.sum(t[:i])))
			plt.text(np.sum(t[:i])+t[i]/4,1,'J%s'%(i+1),color="white")
	else:
		if i==0:
			plt.barh(2,t[i])
			plt.text(np.sum(t[:i+1])/4,2,'J%s'%(i+1),color="white")
		else:
			plt.barh(2,t[i],left=(np.sum(t[:i])))
			plt.text(np.sum(t[:i])+t[i]/4,2,'J%s'%(i+1),color="white")

n=3
plt.yticks(np.arange(n),np.arange(1,n+1))
plt.show()

測試結果

1