首页 帮助中心 新加坡云服务器 新加坡vps服务器中用Plotly创建甘特图的教程
新加坡vps服务器中用Plotly创建甘特图的教程
时间 : 2024-12-31 10:17:55 编辑 : 华纳云 阅读量 : 90

Plotly可以创建交互式图表的库,能支持多种编程语言,如Python、R和JavaScript。下面华纳云整理了在新加坡vps服务器上用Python和Plotly创建单项目/多项目甘特图的方法。

先要保证新加坡vps服务器上安装Python,再用pip安装Plotly:

pip install plotly

在Python脚本中,导入Plotly的graph_objects 模块:

import plotly.graph_objects as go

准备好甘特图数据,数据一般包含任务名称、开始日期、结束日期等:

tasks = [

    {"Task": "Task 1", "Start": "2024-01-01", "Finish": "2024-01-05"},

    {"Task": "Task 2", "Start": "2024-01-03", "Finish": "2024-01-09"},

    # 添加更多任务...

]

再用Plotly的go.Figure 和 go.Bar 创建甘特图:

fig = go.Figure()

 

for task in tasks:

    fig.add_trace(go.Bar(

        name=task["Task"],

        x=[task["Start"], task["Finish"]],

        y=[0, 0],  # y值设为0,因为我们只需要显示条形图的高度为任务名称

        orientation='h',  # 水平条形图

        text=task["Task"],  # 任务名称作为文本显示

        textposition='outside'  # 文本位置在条形图外侧

    ))

 

fig.update_layout(

    title="Gantt Chart",

    xaxis_title="Date",

    yaxis_title="Tasks",

    xaxis_range=["2024-01-01", "2024-01-10"]  # 设置x轴的范围

)

在Python脚本中显示图表:

fig.show()

如果是在web服务器上托管图表,可以使用Dash框架,这是Plotly的用于创建web应用程序的产品。安装Dash:

pip install dash

创建Dash再添加甘特图:

import dash

from dash import dcc

from dash import html

 

app = dash.Dash(__name__)

 

app.layout = html.Div([

    dcc.Graph(

        id='gantt-chart',

        figure=fig

    )

])

 

if __name__ == '__main__':

app.run_server(host='0.0.0.0', port=8050)  # 在8050端口上运行服务器

把Dash应用程序部署到新加坡vps服务器上,确保防火墙和网络相关设置允许外部访问。

还可以用Plotly创建一个多项目的甘特图,用plotly.graph_objects模块中的Figure和Bar对象如:

import plotly.graph_objects as go

from datetime import datetime

 

# 定义项目和任务数据

projects = ["Project A", "Project B", "Project C"]

tasks = {

    "Project A": [

        {"Task": "Task 1", "Start": "2024-01-01", "Finish": "2024-01-05"},

        {"Task": "Task 2", "Start": "2024-01-03", "Finish": "2024-01-10"}

    ],

    "Project B": [

        {"Task": "Task 3", "Start": "2024-01-06", "Finish": "2024-01-12"},

        {"Task": "Task 4", "Start": "2024-01-08", "Finish": "2024-01-15"}

    ],

    "Project C": [

        {"Task": "Task 5", "Start": "2024-01-10", "Finish": "2024-01-18"},

        {"Task": "Task 6", "Start": "2024-01-12", "Finish": "2024-01-20"}

    ]

}

 

# 创建一个Figure对象

fig = go.Figure()

 

# 为每个项目添加任务条形图

for project, project_tasks in tasks.items():

    for task in project_tasks:

        fig.add_trace(go.Bar(

            name=project,

            x=[datetime.strptime(task["Start"], "%Y-%m-%d"), datetime.strptime(task["Finish"], "%Y-%m-%d")],

            y=[task["Task"], task["Task"]],  # 使用任务名称作为y值

            orientation='h',  # 水平条形图

            text=[task["Task"]]*2,  # 任务名称作为文本显示

            textposition='auto'  # 文本位置自动调整

        ))

 

# 更新布局

fig.update_layout(

    title="Multi-Project Gantt Chart",

    xaxis_title="Date",

    yaxis_title="Tasks",

    xaxis_range=["2024-01-01", "2024-01-31"],  # 设置x轴的范围

    legend_title="Projects"

)

 

# 显示图表

fig.show()

其中,先定义项目名称和每个项目的任务列表,每个人物含一个名称、开始日期和结束日期。创建一个figure对象且为每个人物添加一个水平条形图,x值设置为任务开始和结束日期,y值设置为任务名称,orientation='h'来创建水平条形图,并使用text属性在条形图旁边显示任务名称。用update_layout方法更新了图表的布局,包括标题、轴标题和图例标题,并设置了x轴的范围。用了datetime.strptime函数来将日期字符串转换为datetime对象,以便Plotly能够正确地解析和显示日期。还可以根据需要调整xaxis_range参数来设置x轴的显示范围。

 

华纳云 推荐文章
云监控与报警构建一般流程 以mac为例,Neo4j 图数据库安装与操作指南 Linux中计算文件行数字数和字符数的方法 Linux中常用的链接运算符及实例 Linux启航:新手从Windows过渡的必备命令手册 df命令的替代命令pydf的使用方法 windows7资源管理器总是停止工作怎么解决? Linux云服务器的云盘挂载失败的解决办法 使用X-ui快速搭建云服务器的步骤 华纳云为您解读XUI和3XUI 的区别
客服咨询
7*24小时技术支持
技术支持
渠道支持