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

一篇文章教你學(xué)會使用Python繪制甘特圖

 更新時間:2021年09月26日 09:03:01   作者:朱小五是凹凸君呀  
甘特圖又稱為橫道圖、條狀圖,它是以作業(yè)排序為目的,將活動與時間聯(lián)系起來的最早嘗試的工具之一,能夠很直觀地顯示項目、進(jìn)度等和時間的內(nèi)在關(guān)系隨著時間的進(jìn)展情況,在管理和生產(chǎn)活動中被廣泛使用

fc299045b327d8722f785d0876e06dc3.gif

用來制作甘特圖的專業(yè)工具也不少,常見的有:Microsoft Office Project、GanttProject、WARCHART XGantt、jQuery.Gantt、Excel等,網(wǎng)絡(luò)上也有一些優(yōu)質(zhì)工具支持在線繪制甘特圖。

可是這種現(xiàn)成的工具,往往也存在一些弊端,讓編程人員不知所措。比如說,花里胡哨的UI,讓人目不暇接,不知點哪個才好:

5ac30b95e7a0d5fcb8ea8f910c4d69d9.png

比如說,有些基于瀏覽器的圖表需要掌握HTML、JS等編程語言,只會點Python的我直接被勸退:

b31d71f02ee42e737683f0290ffd60e4.png

再比如,進(jìn)來就是注冊、登錄、試用,等搞完了這波操作,時間、精力也耗費(fèi)得差不多了:

8720d88001464ab39d64230a915a55a5.png

其實這種在線環(huán)境還有一個很大的弊端——安全性。我們永遠(yuǎn)也不知道用戶的數(shù)據(jù)是去了開發(fā)者郵箱還是被短暫存儲后銷毀。

相比之下,還是簡簡單單的代碼來的醒目、直觀、安全又便捷。而且,第二種方式,使得圖表的自定義程度也更高,配色、組件尺寸等調(diào)整也往往更加方便。

下面用一個例子來說明如何使用Python繪制甘特圖:

背景:假定疫苗生產(chǎn)需經(jīng)過CJ1、CJ2、CJ3、CJ4共4個工位,且必須按照CJ1-CJ2-CJ3-CJ4的順序輪流在4個工位加工。為防止疫苗包裝出現(xiàn)混亂,規(guī)定每個工位不能同時生產(chǎn)不同類型的疫苗,且疫苗生產(chǎn)不允許插隊,即進(jìn)入第一個工位安排的每類疫苗的生產(chǎn)順序一旦確定就要一直保持不變,而且前一種類型的疫苗離開某個工位后,后一種類型的疫苗才能進(jìn)入這個工位。已知各工位生產(chǎn)加工10種疫苗的平均時長(單位:min)如下表:

31f65c6a88400055602de6c4988756fb.png

目標(biāo):確定最短的總加工時間,并對生產(chǎn)過程以合適的方式進(jìn)行呈現(xiàn)。

思路:在生產(chǎn)調(diào)度問題中,關(guān)于最短加工時長的目標(biāo)優(yōu)化問題,比較常見的算法是根據(jù) Johnson 規(guī)則推廣的 CDS 算法 ,在此不再贅述,感興趣的朋友可以自行搜索。假定已確定的生產(chǎn)順序為YM4-5-2-7-10-1-8-6-3-9,并計算出了每個工位的開始加工時間(單位:min),如下表:

0563bcdcb550d3dbb6864ab1f2a0b54d.png

針對生產(chǎn)過程呈現(xiàn)的問題,我們用Python繪制甘特圖來進(jìn)行可視化處理。

首先,導(dǎo)入依賴的庫:

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches

正常顯示中文和負(fù)號:

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

讀取數(shù)據(jù)表,獲取各工位加工時長和各工位開始加工時間:

df1 = pd.read_excel('time.xlsx', sheet_name='continue_time', index_col='YM')
df2 = pd.read_excel('time.xlsx', sheet_name='start_time', index_col='YM')
 
CJS = ['CJ1', 'CJ2', 'CJ3', 'CJ4']
YMS = ['YM4', 'YM5', 'YM2', 'YM7', 'YM10', 'YM1', 'YM8', 'YM6', 'YM3', 'YM9']
 
# continue_time:各工位加工時長,start_time:各工位開始加工時間
continue_time = []
start_time = []
for cj in CJS:
    continue_time.append([ym for ym in df1[cj][YMS]])
    start_time.append([ym for ym in df2[cj][YMS]])

獲取數(shù)組大小,用于之后的循環(huán):

m = range(len(continue_time))
n = range(len(continue_time[0]))

以下是繪圖過程:

# 指定每個水平柱子顏色
colors = ['r', 'pink', 'orange', 'y', 'g', 'b', 'deeppink', 'purple', 'brown', 'black']
 
# 設(shè)置畫布大小和分辨率
plt.figure(figsize=(20, 8), dpi=200)
# barh:水平柱狀圖,設(shè)置循壞迭代以繪制層疊效果
for i in m:
    for j in n:
        plt.barh(m[i] + 1, continue_time[i][j], left=start_time[i][j], color=colors[j])
plt.title("疫苗生產(chǎn)甘特圖", fontsize=17)
labels = [''] * len(continue_time[0])
for f in n:
    labels[f] = "YM%d" % (f + 1)
# 添加圖例
patches = [mpatches.Patch(color=colors[i],label="{:s}".format(labels[i])) for i in range(len(continue_time[0]))]
plt.legend(handles=patches, loc=4)
# XY軸標(biāo)簽
plt.xlabel("加工時間/分鐘", fontsize=15)
plt.ylabel("各工位加工流程", fontsize=15)
# XY軸刻度
plt.yticks([1, 2, 3, 4], ['CJ1', 'CJ2', 'CJ3', 'CJ4'])
# 網(wǎng)格線,此圖使用不好看,注釋掉
# plt.grid(linestyle="--",alpha=0.5)
plt.savefig('gatte.jpg')
plt.show()

到此為止,一副甘特圖就完工了。

7a6f5535b62ed4228a5b46bec2eafe9f.png

可是對于咱們充滿藝術(shù)細(xì)胞的數(shù)據(jù)從業(yè)者來說,圖表的顏值也是相當(dāng)重要,因此我們在來一個小小的美化,只需修改設(shè)置一下漸變配色列表就好~(來自十八線美工的手動配置)

colors = ['#3B9DD3', '#41ADE8', '#48BEFF', '#44D5FF', '#40EBFF', '#40E0CF', '#43C59E', '#42B091', '#409B83', '#51A48E']

于是乎,一副精美的甘特圖出來了~

18c6809091851617597325592e34993a.png

考慮到有些小伙伴不是很喜歡漸變色,或者對色彩的區(qū)分度要求比較高,亦或者,老板大人是個色狼,哦不對,色盲,那么下一種配色方案就顯得格外重要了

(將上面第一步的設(shè)置漸變配色列表替換為以下內(nèi)容即可~)

from colour import Color
red = Color("red")
colors = list(red.range_to(Color("purple"), 14))
colors = [color.rgb for color in colors]

結(jié)果如下:

477dad202494a2b61ec809ed73c7252b.png

是漂亮的彩虹色!無論對方是女王御姐蘿莉正太少女還是奶狗學(xué)長大叔氣質(zhì)男神,分分鐘給他征服!這也是一個很通用的小技巧,對于可視化工作有很大幫助~

最后,簡單總結(jié)一下甘特圖優(yōu)缺點。

優(yōu)點

1.醒目、直觀、易于理解;

2.方便調(diào)配各項業(yè)務(wù)及工作流程的時間安排;

3.有專業(yè)軟件支持,無須擔(dān)心復(fù)雜計算和分析。

局限

1.僅僅部分地反映了活動流程的時間、成本和范圍約束;

2.不適用于時間依賴關(guān)系過復(fù)雜的場景,否則將大大提高讀圖成本。

一日一書

《數(shù)據(jù)分析從Excel到Power BI:Power BI商業(yè)數(shù)據(jù)分析思維、技術(shù)與實踐》本書以 Power BI 數(shù)據(jù)分析軟件為平臺,將企業(yè)實際工作需求作為出發(fā)點,分別從思維、技術(shù)、實踐這三個方面,全面系統(tǒng)地講解和分享了Power BI在企業(yè)日常數(shù)據(jù)分析場景的運(yùn)用思維、實操技能及綜合管理應(yīng)用的思路。

以上就是一篇文章教你學(xué)會使用Python繪制甘特圖的詳細(xì)內(nèi)容,更多關(guān)于Python繪圖的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Django的Modelforms用法簡介

    Django的Modelforms用法簡介

    這篇文章主要介紹了Django的Modelforms用法簡介,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • 使用matplotlib畫散點圖的方法

    使用matplotlib畫散點圖的方法

    今天小編就為大家分享一篇使用matplotlib畫散點圖的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • PyQt5實現(xiàn)畫布小程序

    PyQt5實現(xiàn)畫布小程序

    這篇文章主要為大家詳細(xì)介紹了PyQt5實現(xiàn)畫布小程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • OpenCV半小時掌握基本操作之腐蝕膨脹

    OpenCV半小時掌握基本操作之腐蝕膨脹

    這篇文章主要介紹了OpenCV基本操作之腐蝕膨脹,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • Python實戰(zhàn)之用tkinter庫做一個鼠標(biāo)模擬點擊器

    Python實戰(zhàn)之用tkinter庫做一個鼠標(biāo)模擬點擊器

    這篇文章主要介紹了Python實戰(zhàn)之用tkinter庫做一個鼠標(biāo)模擬點擊器,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)python的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • Python使用Turtle模塊繪制五星紅旗代碼示例

    Python使用Turtle模塊繪制五星紅旗代碼示例

    這篇文章主要介紹了Python使用Turtle模塊繪制五星紅旗代碼示例,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • 一文帶你了解Python中的雙下方法

    一文帶你了解Python中的雙下方法

    Python中有一些特殊方法的方法名都是以雙下劃線開始和結(jié)束,所以又被稱為雙下方法。本文就來為大家詳細(xì)講講Python中的雙下方法的使用,感興趣的可以了解一下
    2022-07-07
  • Python之文字轉(zhuǎn)圖片方法

    Python之文字轉(zhuǎn)圖片方法

    今天小編就為大家分享一篇Python之文字轉(zhuǎn)圖片方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Python 命令行非阻塞輸入的小例子

    Python 命令行非阻塞輸入的小例子

    很久很久以前,系windows平臺下,用C語言寫過一款貪食蛇游戲,cmd界面,用kbhit()函數(shù)實現(xiàn)非阻塞輸入。系windows平臺下用python依然可以調(diào)用msvcrt.khbit實現(xiàn)非阻塞監(jiān)聽。但系喺linux下面就冇呢支歌仔唱
    2013-09-09
  • 使用scrapy實現(xiàn)爬網(wǎng)站例子和實現(xiàn)網(wǎng)絡(luò)爬蟲(蜘蛛)的步驟

    使用scrapy實現(xiàn)爬網(wǎng)站例子和實現(xiàn)網(wǎng)絡(luò)爬蟲(蜘蛛)的步驟

    本文分二個示例,第一個是個簡單的爬網(wǎng)站的小例子,第二個例子實現(xiàn)目是從一個網(wǎng)站的列表頁抓取文章列表,然后存入數(shù)據(jù)庫中,數(shù)據(jù)庫包括文章標(biāo)題、鏈接、時間,大家參考使用吧
    2014-01-01

最新評論

衡水市| 宜黄县| 高唐县| 时尚| 娱乐| 类乌齐县| 格尔木市| 望奎县| 南安市| 酉阳| 富源县| 夏邑县| 丹阳市| 巴彦淖尔市| 宝山区| 土默特左旗| 晋中市| 白河县| 宁都县| 黑龙江省| 洮南市| 丹棱县| 齐齐哈尔市| 芷江| 新密市| 庆阳市| 仙桃市| 彰化市| 弋阳县| 泾川县| 黑河市| 贞丰县| 南汇区| 资兴市| 弥渡县| 凤凰县| 岑巩县| 元朗区| 高安市| 东安县| 巴南区|