大家好,我是执念斩长河,一个最近学习python绘图的学渣。今天有幸阅读《python数据可视化》(黑马程序员编著),其中的”某新项目8个任务及给任务周期的甘特图“被我python成功实现,特此写博文纪念一下。
1. 题目再现
已知某公司准备开辟一个信息昂木,为确保项目的可行性,项目表为:
某新项目各子项目分配时间表
项目名称 | 时长分配 |
---|
报告提交 | 0.5 | 数据分析 | 1.5 | 数据录入 | 1 | 实地执行 | 3 | 问卷确定 | 0.5 | 试放 | 1 | 问卷设计 | 1 | 项目确定 | 2 |
2.最终效果
2.问题分解
让我们画一个甘特图,类似于上面这种,如果自己脑补一下,那就是个水平柱形图被隐藏了一块,查阅资料用barh()函数,向函数中left进行传值即可。
ax.barh(y_data,x_data,tick_label=ticks,left=[7.5,6,5.5,3,3,2,1.5,0],color='#CD5C5C')
3.完整代码
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
ticks = np.array(['报告提交','数据分析','数据录入','实地执行','问卷确定',
'试访','问卷设计','项目确定'])
y_data = np.arange(1,9)
x_data = np.array([0.5,1.5,1,3,0.5,1,1,2])
fig,ax = plt.subplots(1,1)
ax.barh(y_data,x_data,tick_label=ticks,left=[7.5,6,5.5,3,3,2,1.5,0],color='#CD5C5C')
[ax.spines[i].set_visible(False) for i in ['top','right']]
ax.set_title('任务甘特图')
ax.set_xlabel('日期')
ax.grid(alpha=0.5,axis='x')
plt.show()
4.后记&总结
曲不离口,拳不离手,一天不学很难受!
|