matplotlib自定义图例,matplotlib绘图基础
绘制精美的图表是常见的绘图库,本文主要介绍了绘制精美的图表绘制甘特图的万能模板案例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
目录
定义一个绘制甘特图的类调用及数据格式类似于展示的图形
定义一个绘制甘特图的类
# -*-编码: utf-8 -*-
从日期时间导入日期时间
导入系统
将数组作为铭牌导入
将matplotlib.pyplot作为血小板计数导入
将matplotlib.font_manager作为font_manager导入
将matplotlib.dates作为mdates导入
导入日志记录
来自pylab导入*
mpl。RC params[ font。sans-serif ]=[ sim hei ]
类别甘特图(对象):
#颜色色标:参考http://colorbrewer2.org/
RdYlGr=[#d73027 , #f46d43 , #fdae61 , #fee08b , #ffffbf , #d9ef8b , #a6d96a , #66bd63 , #1a9850]
POS_START=1.0
POS_STEP=0.5
def __init__(自身,任务):
自我fig=plt.figure(figsize=(15,10))
自我. ax=self ._fig.add_axes([0.1,0.1,75,
自我。任务=任务[:-1]#倒序
定义格式日期(自身,日期_字符串):
尝试:
日期=日期时间。日期时间。strptime(date _ string, %Y-%m-%d %H:%M:%S) #将日期字符串转换成日期时间类型
除了值错误为错误:
伐木。错误(“{ 0 }”字符串无法转换为日期时间对象: {1} "。格式(日期字符串,错误))
sys.exit(-1)
mpl _ date=mdates。日期2编号(日期)#得到日期类型的时间戳
返回日期
def _plot_bars(自身):
i=0
对于自我任务:中的任务
开始=自我.格式日期(任务[开始]) #获取任务开始时间的时间戳
结束=自我.格式日期(任务[end]) #获取任务结束时间的时间戳
bottom=(i *甘特图. POS_STEP)甘特图POS_START
宽度=结束-开始#柱子的宽度
自我. ax.barh(bottom,width,left=start,height=0.3,align=center ,label=task[label],color=Gantt .RdYlGr[i%len(甘特图. RdYlGr)])
i=1
def _configure_yaxis(self):
task _ labels=[t[ label ]for t in self。任务]#所有的刻度文本标签
pos=self ._位置(len(任务标签))#素有的刻度值
ylocs=self ._ax.set_yticks(pos) #设置y轴刻度线
ylabels=self ._ ax。set _ yticklabels(task _ labels)#设置y轴刻度标签
plt.setp(ylabels,size=medium) #设置y轴刻度标签属性(中号字)
def _configure_xaxis(self):
自我. ax.xaxis_date() #使用时间轴
rule=mdates。rulewrapper(mdates .每周,间隔=1) #生成时间生成器(每周一个值,从周日开始)
loc=mdates .规则定位器(规则)#生成时间刻度
formatter=mdates .DateFormatter(%m/%d) #生成时间格式
自我. ax。xaxis。set _ major _ locator(loc)#设置主刻度
自我. ax。xaxis。set _ major _ formatter(格式化程序)#设置主刻度标签格式
xlabels=self ._ax.get_xticklabels() #获取刻度标签对象
plt.setp(xlabels,rotation=70,fontsize=10) #设置刻度标签对象的属性(30度旋转,字体大小10)
定义_配置_图形(自身):
自我. configure_xaxis()
自我. configure_yaxis()
自我. ax.grid(True,axis=x ,color=gray )
自我. set_legend()
自我. fig.autofmt_xdate()
定义_集合_图例(自身):
font=font_manager .FontProperties(size=small )
自我. ax.legend(loc=右上,prop=font)
def _positions(自身,计数):
结束=计数*甘特图. POS_STEP甘特图POS_START
pos=np.arange(甘特图。位置_开始,结束,甘特图. POS_STEP)
退货位置
定义显示(自身):
自我。_ plot _ bars()
自我。_configure_figure()
plt.show()
调用及数据格式
if __name__==__main__:
测试数据=(
{label: 项目调查, start 3360 2019-02-01 1233600336000 , end 3360 2019-03-15 18336000336000 },
{label: 项目准备, start 3360 2019-02-15 0933600:00 , end 3360 2019-04-09 12336000336000 },
{label: 制定计划, start 3360 2019-04-10 12:0336000 , end 3360 2019-05-30 18336000336000 },
{label: 项目实施, start 3360 2019-05-01 0933600:00 , end 3360 2019-08-31 1:00336000 },
{label: 项目培训, start 3360 2019-07-01 0933600336000 , end 3360 2019-09-21 1:00336000 },
{label: 工程验收, start 3360 2019-09-22 0933600:00 , end 3360 2019-10-22 1:00:00 },
{label: 项目完成, start 3360 2019-10-23 0933600336000 , end 3360 2019-11-23 1:00336000 },
)
甘特图=甘特图(测试数据)
Plt.xlabel(“项目日期”)
Plt.ylabel(“项目进度”)
项目标题(“项目进度甘特图”)
图形尺寸=(10,10),dpi=150
gantt.show()
类似于展示的图形
本文关于matplotlib绘制甘特图的通用模板案例到此为止。有关matplotlib甘特图的更多信息,请搜索热门IT软件开发工作室之前的文章或继续浏览下面的相关文章。希望大家以后多多支持热门IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。