实用代码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

猜你喜欢

转载自blog.csdn.net/weixin_40775077/article/details/84680585