最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實現(xiàn)甘特圖繪制的示例詳解

 更新時間:2023年04月10日 14:09:27   作者:關于數據分析與可視化  
相信在平常實際工作當中,需要對整體的項目做一個梳理,這時如果有一個網頁應用能夠對整體項目有一個可視化頁面的展示,是不是會對你的實際工作有所幫助呢?今天小編就通過Python+Streamlit框架來繪制甘特圖并制作可視化大屏,需要的可以參考一下

相信大家在平常實際工作當中,需要對整體的項目做一個梳理,這時如果有一個網頁應用能夠對整體項目有一個可視化頁面的展示,是不是會對你的實際工作有所幫助呢?說不定還可以讓你事半功倍,今天小編就想通過Python+Streamlit框架來對整體項目的進展做一個可視化的展示。

前期準備

因為我們這次需要用到streamlit、streamlit-aggrid以及plotly模塊,先通過pip命令將這些模塊下載下來,其中streamlit-aggrid主要是將數據表能夠呈現(xiàn)在頁面上

pip install streamlit-aggrid
pip install plotly

頁面的結構

整體頁面的結構是左邊有一個工具欄,包含了該網頁的一些簡短介紹、以及一個希望使用者評分和反饋的模塊

而右邊則的Section1是項目規(guī)劃文件的模板樣式,主要是在CSV文件當中寫清楚任務的細節(jié),包括任務名稱、任務描述、開始與結束時間等等內容。Section2則是允許用戶上傳自己的CSV文件,修改CSV文件中項目的內容以及一個可視化的呈現(xiàn),而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

接下來我們針對左邊工具欄的部分進行一個開發(fā),主要是對該頁面進行一個簡單的介紹以及評分等功能

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)

結果如下圖所示

主頁面的開發(fā)-Section 1

接下去便是主頁面的Section 1部分的開發(fā),主要是展示項目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',
 )

我們提供了下載按鈕可以讓用戶一鍵下載模板文件,最后呈現(xiàn)的樣子是這樣的

主頁頁面的開發(fā)-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

接下去便是對數據的可視化呈現(xiàn)了,這里是用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實現(xiàn)甘特圖繪制的示例詳解的文章就介紹到這了,更多相關Python甘特圖內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 18?個?Python?編程技巧,提高工作效率

    18?個?Python?編程技巧,提高工作效率

    這篇文章主要分享的是18個Python編程技巧,文章圍繞?Python的相關資料展開詳細全文,對工作中的你了能具有一定的參考價值,需要的朋友可以參考一下,希望對你有所幫助
    2022-01-01
  • Python使用django框架實現(xiàn)多人在線匿名聊天的小程序

    Python使用django框架實現(xiàn)多人在線匿名聊天的小程序

    很多網站都提供了在線匿名聊天的小功能,下面小編基于python的django框架實現(xiàn)一個多人在線匿名聊天的小程序,具體實現(xiàn)代碼大家參考下本文
    2017-11-11
  • python的slice notation的特殊用法詳解

    python的slice notation的特殊用法詳解

    今天小編就為大家分享一篇python的slice notation的特殊用法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • 關于numpy.array的shape屬性理解

    關于numpy.array的shape屬性理解

    這篇文章主要介紹了關于numpy.array的shape屬性理解,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • python3.x編碼解碼unicode字符串的實現(xiàn)示例

    python3.x編碼解碼unicode字符串的實現(xiàn)示例

    ASCII文本編碼是一種Unicode,存儲為表示字符的字節(jié)值的一個序列,本文主要介紹了python3.x編碼解碼unicode字符串的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • Python request操作步驟及代碼實例

    Python request操作步驟及代碼實例

    這篇文章主要介紹了Python request操作步驟及代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • Python3基礎之函數用法

    Python3基礎之函數用法

    這篇文章主要介紹了Python3的函數用法,非常重要,需要的朋友可以參考下
    2014-08-08
  • Python九九乘法表的七種實現(xiàn)方式詳解

    Python九九乘法表的七種實現(xiàn)方式詳解

    在Python中,輸出九九乘法表是一道非?;A的題目,但對于初學者來說,也是一個很好的練習和鞏固基礎知識的機會,這篇文章主要給大家介紹了關于Python九九乘法表的七種實現(xiàn)方式,需要的朋友可以參考下
    2023-09-09
  • python統(tǒng)計中文字符數量的兩種方法

    python統(tǒng)計中文字符數量的兩種方法

    今天小編就為大家分享一篇python統(tǒng)計中文字符數量的兩種方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • python獲取當前計算機cpu數量的方法

    python獲取當前計算機cpu數量的方法

    這篇文章主要介紹了python獲取當前計算機cpu數量的方法,涉及Python操作計算機硬件的技巧,代碼簡單易懂,非常具有實用價值,需要的朋友可以參考下
    2015-04-04

最新評論

祁东县| 威海市| 泰宁县| 石嘴山市| 托里县| 濮阳市| 康平县| 桃源县| 辽宁省| 吴江市| 内江市| 阿瓦提县| 德庆县| 策勒县| 嘉兴市| 栾城县| 承德市| 罗源县| 桐柏县| 遂宁市| 三台县| 增城市| 诸城市| 双城市| 合阳县| 随州市| 正镶白旗| 密山市| 武定县| 安化县| 佛教| 安多县| 永州市| 八宿县| 东乡| 柞水县| 湟中县| 福泉市| 高淳县| 图木舒克市| 武宁县|