【Python百日进阶-数据分析】Day138 - plotly甘特图:px.timeline()
创始人
2024-05-01 01:34:02
0

文章目录

  • 一、语法
  • 二、参数
  • 三、返回值
  • 四、实例
    • 4.1 带有 plotly.express 的甘特图和时间表
      • 4.1.1 普通甘特图
      • 4.1.2 px.timeline 的离散颜色
      • 4.1.3 px.timeline 的连续颜色
      • 4.1.4 同一水平线上有多个条
      • 4.1.5 Dash中使用甘特图

一、语法

甘特图是一种条形图,用于说明项目进度。该图表在垂直轴上列出了要执行的任务,在水平轴上列出了时间间隔。图表中水平条的宽度显示了每个活动的持续时间。

plotly.express.timeline(data_frame=None, x_start=None, x_end=None, y=None, color=None, facet_row=None, facet_col=None, facet_col_wrap=0, facet_row_spacing=None, facet_col_spacing=None, hover_name=None, hover_data=None, custom_data=None, text=None, animation_frame=None, animation_group=None, category_orders=None, labels=None, color_discrete_sequence=None, color_discrete_map=None, color_continuous_scale=None, range_color=None, color_continuous_midpoint=None, opacity=None, range_x=None, range_y=None, title=None, template=None, width=None, height=None)

在时间线图(甘特图)中, 的每一行都data_frame表示为类型为 x 轴上的矩形标记date,范围从x_start到x_end。

二、参数

  • data_frame ( DataFrame或类似数组的或dict ) – 需要传递此参数才能使用列名(而不是关键字名)。Array-like 和 dict 在内部转换为 pandas DataFrame。可选:如果缺少,则使用其他参数在后台构建 DataFrame。

  • x_start ( str或int或Series或array-like ) – 中的列名data_frame,或者 pandas Series 或 array_like 对象。(必需)此列或 array_like 中的值用于在笛卡尔坐标中沿 x 轴定位标记。

  • x_end ( str或int或Series或array-like ) – 中的列名data_frame,或者 pandas Series 或 array_like 对象。(必需)此列或 array_like 中的值用于在笛卡尔坐标中沿 x 轴定位标记。

  • y(str或int或Series或array-like)– 中的列名data_frame,或者 pandas Series 或 array_like 对象。此列或 array_like 中的值用于在笛卡尔坐标中沿 y 轴定位标记。

  • color(str或int或Series或array-like)– 中的列名data_frame,或者 pandas Series 或 array_like 对象。此列或 array_like 中的值用于为标记分配颜色。

  • facet_row ( str或int或Series或array-like ) – 中的列名data_frame,或者 pandas Series 或 array_like 对象。此列或 array_like 中的值用于在垂直方向上为多面子图分配标记。

  • facet_col ( str或int或Series或array-like ) – 中的列名data_frame,或者 pandas Series 或 array_like 对象。此列或 array_like 中的值用于在水平方向上为多面子图分配标记。

  • facet_col_wrap ( int ) – 最大分面列数。以该宽度包装列变量,以便列分面跨越多行。如果为 0,则忽略,如果设置facet_row了或 a ,marginal则强制为 0。

  • facet_row_spacing ( float between 0 and 1 ) – 分面行之间的间距,以纸张为单位。使用 facet_col_wrap 时,默认值为 0.03 或 0.0.7。

  • facet_col_spacing ( float between 0 and 1 ) – 分面列之间的间距,以纸张为单位默认为 0.02。

  • hover_name(str或int或Series或array-like)- 中的列名data_frame,或者 pandas Series 或 array_like 对象。此列或 array_like 中的值在悬停工具提示中以粗体显示。

  • hover_data ( list of str or int , or Series or array-like , or dict ) – 或者 pandas Series 中的列名列表data_frame,或者是 array_like 对象或者以列名作为键的 dict,值为 True (默认为格式)False(为了从悬停信息中删除此列)或格式字符串,例如 ‘:.3f’ 或 ’ | %a’ 或类似列表的数据出现在悬停工具提示中,或带有布尔或格式化字符串的元组作为第一个元素,以及类似列表的数据作为第二个元素出现在悬停中 这些列中的值在悬停工具提示中显示为额外数据.

  • custom_data(str或int的列表,或Series或类似数组)——data_frame或 pandas Series 或 array_like 对象中的列名称这些列的值是额外数据,例如用于小部件或 Dash 回调。此数据对用户不可见,但包含在图形发出的事件中(套索选择等)

  • text ( str或int或Series或array-like ) – 中的列名data_frame,或者 pandas Series 或 array_like 对象。此列或 array_like 中的值在图中显示为文本标签。

  • animation_frame ( str或int或Series或array-like ) – 中列的名称data_frame,或者 pandas Series 或 array_like 对象。此列或 array_like 中的值用于为动画帧分配标记。

  • animation_group ( str或int或Series或array-like ) – 中的列名data_frame,或者 pandas Series 或 array_like 对象。此列或 array_like 中的值用于提供跨动画帧的对象恒定性:具有匹配 animation_group 的行将被视为描述每个帧中的相同对象。

  • category_orders(带有 str 键和 str 值列表的字典(默认{}))——默认情况下,在 Python 3.6+ 中,轴、图例和构面中的分类值的顺序取决于这些值第一次遇到的顺序data_frame(并且没有在低于 3.6 的 Python 中默认保证顺序)。此参数用于强制对每列的值进行特定排序。此 dict 的键应对应于列名,值应是与所需的特定显示顺序相对应的字符串列表。

  • labels (带有 str 键和 str 值的字典(默认{}))——默认情况下,列名在图中用于轴标题、图例条目和悬停。这个参数允许它被覆盖。此 dict 的键应对应于列名,值应对应于要显示的所需标签。

  • color_discrete_sequence ( list of str ) – 字符串应该定义有效的 CSS 颜色。当color设置为 且对应列中的值不是数字时,该列中的值通过color_discrete_sequence 按 中描述的顺序循环分配颜色category_orders,除非 的值 color是 中的键color_discrete_map。子模块中提供了各种有用的颜色序列plotly.express.colors,特别是plotly.express.colors.qualitative.

  • color_discrete_map(带有 str 键和 str 值的字典(默认{}))——字符串值应定义有效的 CSS-colors 用于覆盖 color_discrete_sequence以将特定颜色分配给与特定值对应的标记。中的键color_discrete_map应该是由 表示的列中的值color。或者,如果 的值color是有效颜色,则’identity’可以传递字符串以直接使用它们。

  • color_continuous_scale ( list of str ) – 字符串应定义有效的 CSS-colors 此列表用于在由 表示的列color包含数字数据时构建连续的色标。子模块中提供了各种有用的色标 plotly.express.colors,特别 plotly.express.colors.sequential是plotly.express.colors.diverging 和plotly.express.colors.cyclical。

  • range_color(两个数字的列表)–如果提供,则覆盖连续色标上的自动缩放。

  • color_continuous_midpoint (number (default None)) – 如果设置,计算连续色标的边界以获得所需的中点。plotly.express.colors.diverging建议在使用色标作为 的输入 时设置此值 color_continuous_scale。

  • opacity ( float ) – 介于 0 和 1 之间的值。设置标记的不透明度。

  • range_x (两个数字的列表) – 如果提供,则覆盖笛卡尔坐标中 x 轴上的自动缩放。

  • range_y (两个数字的列表) – 如果提供,则覆盖笛卡尔坐标中 y 轴上的自动缩放。

  • title ( str ) – 图形标题。

  • template (str或dict或plotly.graph_objects.layout.Template 实例)–图形模板名称(必须是 plotly.io.templates 中的键)或定义。

  • width (int (default None)) – 图形宽度(以像素为单位)。

  • height (int (default None)) – 以像素为单位的图形高度。

三、返回值

plotly.graph_objects.Figure

四、实例

4.1 带有 plotly.express 的甘特图和时间表

Plotly Express是 Plotly 的易于使用的高级界面,它对各种类型的数据进行操作并生成易于样式化的图形。使用px.timeline(在 4.9 版中引入)每个数据点都表示为一个水平条,其起点和终点指定为日期。

该px.timeline函数默认将 X 轴设置为 of type=date,因此可以像任何时间序列图一样进行配置。

4.1.1 普通甘特图

import plotly.express as px
import pandas as pddf = pd.DataFrame([dict(Task="Job A", Start='2009-01-01', Finish='2009-02-28'),dict(Task="Job B", Start='2009-03-05', Finish='2009-04-15'),dict(Task="Job C", Start='2009-02-20', Finish='2009-05-30')
])fig = px.timeline(df, x_start="Start", x_end="Finish", y="Task")
fig.update_yaxes(autorange="reversed") # 否则,任务将自下而上列出
fig.show()

在这里插入图片描述

4.1.2 px.timeline 的离散颜色

import plotly.express as px
import pandas as pddf = pd.DataFrame([dict(Task="Job A", Start='2009-01-01', Finish='2009-02-28', Resource="Alex"),dict(Task="Job B", Start='2009-03-05', Finish='2009-04-15', Resource="Alex"),dict(Task="Job C", Start='2009-02-20', Finish='2009-05-30', Resource="Max")
])fig = px.timeline(df, x_start="Start", x_end="Finish", y="Task", color="Resource")
fig.update_yaxes(autorange="reversed")
fig.show()

在这里插入图片描述

4.1.3 px.timeline 的连续颜色

import plotly.express as px
import pandas as pddf = pd.DataFrame([dict(Task="Job A", Start='2009-01-01', Finish='2009-02-28', Completion_pct=50),dict(Task="Job B", Start='2009-03-05', Finish='2009-04-15', Completion_pct=25),dict(Task="Job C", Start='2009-02-20', Finish='2009-05-30', Completion_pct=75)
])fig = px.timeline(df, x_start="Start", x_end="Finish", y="Task", color="Completion_pct")
fig.update_yaxes(autorange="reversed")
fig.show()

在这里插入图片描述

4.1.4 同一水平线上有多个条

注意:设置color为与 相同的值时y,autorange不应设置为reverse,以便按照与图例条目相同的顺序列出 Y 轴的值。

import plotly.express as px
import pandas as pddf = pd.DataFrame([dict(Task="Job A", Start='2009-01-01', Finish='2009-02-28', Resource="Alex"),dict(Task="Job B", Start='2009-03-05', Finish='2009-04-15', Resource="Alex"),dict(Task="Job C", Start='2009-02-20', Finish='2009-05-30', Resource="Max")
])fig = px.timeline(df, x_start="Start", x_end="Finish", y="Resource", color="Resource")
fig.show()

在这里插入图片描述

4.1.5 Dash中使用甘特图

import plotly.graph_objects as go # or plotly.express as pximport dash
from dash import html, dccfig = go.Figure() # or any Plotly Express function e.g. px.bar(...)
# fig.add_trace( ... )
# fig.update_layout( ... )app = dash.Dash()
app.layout = html.Div([dcc.Graph(figure=fig)
])app.run_server(debug=True, use_reloader=False)  # Turn off reloader if inside Jupyter

相关内容

热门资讯

安卓系统自带的网页,功能与特色... 你有没有发现,每次打开安卓手机,那熟悉的系统界面里总有一个默默无闻的小家伙——安卓系统自带的网页浏览...
美咖云系统安卓版,开启智能生活... 你有没有发现,最近手机上多了一个叫“美咖云系统安卓版”的小家伙?它就像一个魔法师,轻轻一点,就能让你...
安卓系统推荐最好的手机,盘点性... 你有没有想过,拥有一部性能卓越的手机,就像是拥有了移动的宝藏库?在这个信息爆炸的时代,一部好手机不仅...
安卓11系统能精简吗,释放潜能 你有没有发现,随着手机越来越智能,系统也越来越庞大?安卓11系统,这个最新的操作系统,是不是也让你觉...
安卓自动重启系统软件,揭秘原因... 手机突然自动重启,是不是感觉整个人都不好了?别急,今天就来和你聊聊这个让人头疼的安卓自动重启系统软件...
苹果手机x刷安卓系统,探索安卓... 你有没有想过,你的苹果手机X竟然也能刷上安卓系统?是的,你没听错,就是那个一直以来都和我们苹果手机X...
安卓系统智商低吗,智商低下的真... 你有没有想过,为什么安卓系统的智商总被调侃得好像有点低呢?是不是觉得它总是慢吞吞的,有时候还犯点小错...
安卓系统手机联系人,揭秘你的社... 你有没有发现,手机里的联系人列表就像是一个小小的社交圈呢?里面藏着我们的亲朋好友、工作伙伴,甚至还有...
安卓系统免费铃声下载,打造个性... 手机里那首老掉牙的铃声是不是让你觉得有点out了呢?别急,今天就来给你支个招,让你轻松给安卓手机换上...
安卓系统用哪个桌面好,打造个性... 你有没有发现,手机桌面可是我们每天都要面对的“脸面”呢?换一个好看的桌面,心情都能跟着好起来。那么,...
虚拟大师是安卓10系统,功能与... 你知道吗?最近在手机圈里,有个新玩意儿引起了不小的轰动,那就是虚拟大师!而且,更让人惊喜的是,这个虚...
安卓系统与苹果优缺点,系统优缺... 说到手机操作系统,安卓和苹果绝对是两大巨头,它们各有各的特色,就像两道不同的美味佳肴,让人难以抉择。...
安卓win双系统主板,融合与创... 你有没有想过,一台电脑如果既能流畅运行安卓系统,又能轻松驾驭Windows系统,那该有多爽啊?没错,...
安卓系统可精简软件,轻松提升手... 你有没有发现,手机里的安卓系统越来越庞大,软件也越装越多,有时候感觉手机就像个“大肚子”,不仅运行速...
安卓系统基于linux的代码,... 你有没有想过,那个陪伴你每天刷抖音、玩游戏、办公的安卓系统,其实背后有着一套复杂的基于Linux的代...
苹果和安卓的拍照系统,谁更胜一... 你有没有发现,现在手机拍照已经成为我们生活中不可或缺的一部分呢?无论是记录生活的点滴,还是捕捉美丽的...
苹果和安卓系统不同吗,系统差异... 你有没有想过,为什么你的手机里装的是苹果的iOS系统,而朋友的手机却是安卓系统呢?这两种系统,看似都...
安卓系统有多少级,揭秘其多级架... 你有没有想过,那个陪伴我们日常生活的安卓系统,它其实有着丰富的层级结构呢?没错,就是那个让我们的手机...
华为鸿蒙系统与安卓的,技术融合... 你知道吗?最近科技圈可是炸开了锅,华为鸿蒙系统与安卓的较量成为了大家热议的话题。这不,今天我就来给你...
什么安卓手机是苹果系统,搭载苹... 你有没有想过,为什么有些人宁愿花大价钱买苹果手机,而有些人却对安卓手机情有独钟呢?其实,这个问题背后...