iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python实现甘特图绘制的示例详解
  • 513
分享到

Python实现甘特图绘制的示例详解

Python绘制甘特图Python甘特图 2023-05-15 08:05:42 513人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录前期准备页面的结构代码部分主页面的开发-Section 1主页页面的开发-Section 2相信大家在平常实际工作当中,需要对整体的项目做一个梳理,这时如果有一个网页应用能够对整

相信大家在平常实际工作当中,需要对整体的项目做一个梳理,这时如果有一个网页应用能够对整体项目有一个可视化页面的展示,是不是会对你的实际工作有所帮助呢?说不定还可以让你事半功倍,今天小编就想通过python+Streamlit框架来对整体项目的进展做一个可视化的展示。

前期准备

因为我们这次需要用到streamlitstreamlit-aggrid以及plotly模块,先通过pip命令将这些模块下载下来,其中streamlit-aggrid主要是将数据表能够呈现在页面上

pip install streamlit-aggrid
pip install plotly

页面的结构

整体页面的结构是左边有一个工具栏,包含了该网页的一些简短介绍、以及一个希望使用者评分和反馈的模块

而右边则的Section1是项目规划文件的模板样式,主要是在CSV文件当中写清楚任务的细节,包括任务名称、任务描述、开始与结束时间等等内容。Section2则是允许用户上传自己的CSV文件,修改CSV文件中项目的内容以及一个可视化的呈现,而Section3则是将上述的内容导出至html文件当中去

代码部分

下面便是该页面的代码部分

from st_aggrid import AgGrid
import streamlit as st
import pandas as pd
import numpy as np
import plotly.express as px
from  PIL import Image
import io

接下来我们针对左边工具栏的部分进行一个开发,主要是对该页面进行一个简单的介绍以及评分等功能

loGo = Image.open(r'wechat_logo.jpg')
st.sidebar.image(logo,  width=120)

with st.sidebar.expander("关于此APP的功能"):
     st.write("""
        项目的简单介绍)
     """)

with st.sidebar.fORM(key='columns_in_form',clear_on_submit=True): 
    st.write('反馈')
    st.write('<style>div.row-widget.stRadio > div{flex-direction:row;} </style>', unsafe_allow_html=True) # 水平方向的按钮
    rating=st.radio("打分",('1','2','3','4','5'),index=4)
    text=st.text_input(label='反馈')
    submitted = st.form_submit_button('提交')
    if submitted:
      st.write('感谢')
      st.markdown('您的评分是:')
      st.markdown(rating)
      st.markdown('您的反馈是:')
      st.markdown(text)

结果如下图所示

主页面的开发-Section 1

接下去便是主页面的Section 1部分的开发,主要是展示项目CSV文件的样式,包含了哪些列、列名分别是什么等等,代码如下

st.markdown(""" <style> .font {                                          
    font-size:30px ; font-family: 'Cooper Black'; color: #FF9633;} 
    </style> """, unsafe_allow_html=True)
st.markdown('<p class="font">上传您的CSV文件</p>', unsafe_allow_html=True)

st.subheader('第一步:下载模板文件')
image = Image.open(r'example.png') # 模板文件的截图
st.image(image,  caption='确保列名是一致的')

@st.cache_data
def convert_df(df):
     return df.to_csv().encode('utf-8')

df=pd.read_csv(r'template.csv', encoding='gbk')
csv = convert_df(df)
st.download_button(
     label="下载模板",
     data=csv,
     file_name='project_template.csv',
     mime='text/csv',
 )

我们提供了下载按钮可以让用户一键下载模板文件,最后呈现的样子是这样的

主页页面的开发-Section 2

接下去便是上传我们自己的CSV文件,这里我们用到了streamlit_aggrid模块,该模块的好处就在于可以对数据表进行一个展示,并且可以对其中的数据进行修改,

st.subheader('Step 2: Upload your project plan file')
uploaded_file = st.file_uploader(
    "上传文件",
    type=['csv'])
if uploaded_file is not None:
    Tasks = pd.read_csv(uploaded_file, encoding='gbk')
    Tasks['Start'] = Tasks['Start'].astype('datetime64')
    Tasks['Finish'] = Tasks['Finish'].astype('datetime64')

    grid_response = AgGrid(
        Tasks,
        editable=True,
        height=300,
        width='100%',
    )

    updated = grid_response['data']
    df = pd.DataFrame(updated)

output

接下去便是对数据的可视化呈现了,这里是用Plotly模块来绘制甘特图,我们可以选择是以团队的维度来绘制或者是以项目完成的进度来绘制,代码如下

st.subheader('第三部:绘制甘特图')

Options = st.selectbox("以下面哪种维度来绘制甘特图:", ['Team', 'Completion Pct'], index=0)
if st.button('绘制甘特图'):
    fig = px.timeline(
        df,
        x_start="Start",
        x_end="Finish",
        y="Task",
        color=Options,
        hover_name="Task Description"
    )

    fig.update_yaxes(
        autorange="reversed")

    fig.update_layout(
        title='Project Plan Gantt Chart',
        bargap=0.2,
        height=600,
        xaxis_title="Date",
        yaxis_title="Project Name",
        title_x=0.5,
        xaxis=dict(
            tickfont_size=15,
            tickangle=270,
            rangeslider_visible=True,
            side="top",
            showgrid=True,
            zeroline=True,
            showline=True,
            showticklabels=True,
            tickformat="%x\n",
        )
    )

    fig.update_xaxes(tickangle=0, tickfont=dict(family='Rockwell', color='blue', size=15))
    st.plotly_chart(fig, use_container_width=True)  # 绘制甘特图至页面上
    st.subheader(
        'Bonus: 导出至HTML') 
    buffer = io.StringIO()
    fig.write_html(buffer, include_plotlyjs='cdn')
    html_bytes = buffer.getvalue().encode()
    st.download_button(
        label='Export to HTML',
        data=html_bytes,
        file_name='Gantt.html',
        mime='text/html'
    )
else:
    st.write('---')

到此这篇关于Python实现甘特图绘制的示例详解的文章就介绍到这了,更多相关Python甘特图内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python实现甘特图绘制的示例详解

本文链接: https://www.lsjlt.com/news/208554.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python实现甘特图绘制的示例详解
    目录前期准备页面的结构代码部分主页面的开发-Section 1主页页面的开发-Section 2相信大家在平常实际工作当中,需要对整体的项目做一个梳理,这时如果有一个网页应用能够对整...
    99+
    2023-05-15
    Python绘制甘特图 Python甘特图
  • Python怎么实现甘特图绘制
    这篇“Python怎么实现甘特图绘制”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python怎么实现甘特图绘制”文章吧。前...
    99+
    2023-07-06
  • Python使用Matplotlib绘制甘特图的实践
    目录1.引言2.举个栗子3.数据预处理4.绘制甘特图5.添加颜色6.添加透明度7.再优化8. 总结1.引言 甘特图已经拥有 100 多年的历史,这种可视化图表对项目管理非常有用。 ...
    99+
    2024-04-02
  • 利用Matlab绘制甘特图的方法详解
    目录前言工具函数完整代码使用方法基本使用不咋好看的圆角修改Y轴标签添加每个任务上的文本信息单独修改任务标签信息修改颜色前言 好久不见哈,今天带来一个不咋炫酷但是比较实用的甘特图绘制,...
    99+
    2022-11-13
    Matlab绘制甘特图 Matlab 甘特图
  • Python如何使用Matplotlib绘制甘特图
    小编给大家分享一下Python如何使用Matplotlib绘制甘特图,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1.引言甘特图已经拥有 100 多年的历史,这种可视化图表对项目管理非常有用。Henry Gantt 为了分...
    99+
    2023-06-22
  • matplotlib绘制甘特图的万能模板案例
    目录定义一个绘制甘特图的类调用及数据格式类似于展示的图形定义一个绘制甘特图的类 # -*- coding: utf-8 -*- from datetime import date...
    99+
    2024-04-02
  • Python+matplotlib实现绘制等高线图示例详解
    目录前言1. 等高线图概述什么是等高线图?等高线图常用场景绘制等高线图步骤案例展示2. 等高线图属性设置等高线颜色设置等高线透明度设置等高线颜色级别设置等高线宽度设置等高线样式3. ...
    99+
    2024-04-02
  • Python实现动态绘图的示例详解
    目录示例FuncAnimation三维情况示例 matplotlib中的animation提供了动态绘图功能,下面列举一个最简单的动态绘制三角函数的例子,来初步演示一下。 impor...
    99+
    2023-05-19
    Python实现动态绘图 Python动态绘图 Python绘图
  • Python+Matplotlib绘制3D图像的示例详解
    目录1. 绘制3D柱状图2. 绘制3D曲面图示例1示例23.绘制3D散点图4. 绘制3D曲线图1. 绘制3D柱状图 绘制3D柱状图使用的是axes3d.bar()方法。 可能跟我们中...
    99+
    2024-04-02
  • Python+Seaborn绘制分布图的示例详解
    目录前言示例 1示例 2示例 3示例 4示例 5例子 6例子 7示例 8示例 9示例10前言 在本文中,我们将介绍10个示例,以掌握如何使用用于Python的Seaborn库创建图表...
    99+
    2024-04-02
  • Python+folium绘制精美地图的示例详解
    目录1.准备工作2.关于folium.Map()3.内建地图底图样式4.多种第三方地图底图样式4.1.高德地图4.2.智图GeoQ4.3.腾讯地图4.4.天地图5.补充1. 准备工作...
    99+
    2024-04-02
  • Python绘制惊艳的桑基图的示例详解
    目录桑基图简介什么是桑基图如何绘制桑基图桑基图绘图基础调整节点位置和图表宽度添加有意义的悬停标签桑基图简介 很多时候,我们需要一种必须可视化数据如何在实体之间流动的情况。例如,以居民...
    99+
    2024-04-02
  • Vue+Echarts绘制饼图的示例详解
    目录1 引入Echarts1.1 安装1.2 引入1.3 基本使用2 基本饼状图3 为饼图添加标题等属性3.1 标题图例3.2 数据展示3.3 样式设置4 饼图扩展5 总结1 引入E...
    99+
    2023-03-19
    Vue Echarts绘制饼图 Vue Echarts饼图 Vue Echarts
  • vue中gantt甘特图的示例分析
    这篇文章主要为大家展示了“vue中gantt甘特图的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue中gantt甘特图的示例分析”这篇文章吧。需求横轴左侧是表格数据,可以展示基本信息...
    99+
    2023-06-21
  • 使用vis-timeline绘制甘特图并实现时间轴的中文化(案例代码)
    目录使用vis-timeline绘制甘特图并实现时间轴的中文化最终实现效果安装vis-timeline及相关依赖包组件中引入使用visGantt组件visgantt组件调用使用vis...
    99+
    2023-02-16
    vis-timeline绘制甘特图 vis-timeline甘特图时间轴
  • Flutter 绘制风车实现示例详解
    目录前言展示1. 风车 1 的绘制2. 风车 2 的绘制3. 旋转动画的处理4. 旋转动画的圈数前言展示 最近源码看得比较多,本文来画点东西调节下心情,本绘制已收录于 Flutter...
    99+
    2022-11-13
    Flutter 绘制风车 Flutter 绘制
  • 一篇文章教你学会使用Python绘制甘特图
    目录优点局限一日一书 用来制作甘特图的专业工具也不少,常见的有:Microsoft Office Project、GanttProject、WARCHART XGantt、jQuer...
    99+
    2024-04-02
  • 详解Python+Pyecharts实现漏斗图的绘制
    目录任务描述相关知识编程要求测试说明代码任务描述 本关任务:利用 PyEcharts 绘制一个基本的漏斗图。 相关知识 为了完成本关任务,你需要掌握: 1. Python 的基本语法...
    99+
    2024-04-02
  • Pythonpyecharts实现绘制中国地图的实例详解
    目录实例演示1.pyecharts 1.9.1 版本安装与数据准备2.添加数据项,默认中国地图显示常用配置项及参数解析1.设置是否默认选中2.设置地图颜色类型是否分段显示3.缩放平移...
    99+
    2024-04-02
  • Python绘制多因子柱状图的实现示例
    目录背景介绍软件介绍绘图教程最后背景介绍 R和Python作为两个开源、且容易上手的数据分析和绘图工具,在科研中应用的比较广泛。 在接下来的日子,我们围绕Python进行绘图和数据分...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作