当前位置: 首页 > 知识库问答 >
问题:

使用plotly将线/面积图创建为甘特图

师野
2023-03-14

我正在尝试创建一个线/面积图,它看起来像一个用python绘制的甘特图。这是因为我没有开始和结束列(px.timeline需要)。相反,我有几个向量,从某个时间点开始,在几个月内减少。为了更好地说明,这是我的数据框架:

periods      0       1       2       3       4       5       6      7      8      9      10     11     12     13     14     15     16     17    18
start                                                                                                                                             
2018-12     2.0     2.0     2.0     2.0     2.0     2.0     2.0    2.0    1.0    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN
2019-01   252.0   240.0   228.0   208.0   199.0   182.0   168.0  152.0  141.0  132.0  120.0  108.0   91.0   77.0   66.0   52.0   37.0   19.0   7.0
2019-02   140.0   135.0   129.0   123.0   114.0   101.0    99.0   91.0   84.0   74.0   62.0   49.0   45.0   39.0   33.0   26.0   20.0   10.0   3.0
2019-03    97.0    93.0    85.0    79.0    73.0    68.0    62.0   60.0   54.0   50.0   45.0   41.0   37.0   31.0   23.0   18.0   11.0    4.0   NaN
2019-04    92.0    90.0    86.0    82.0    78.0    73.0    67.0   58.0   51.0   46.0   41.0   38.0   36.0   34.0   32.0   19.0   14.0    3.0   1.0
2019-05   110.0   106.0    98.0    94.0    88.0    84.0    81.0   74.0   66.0   64.0   61.0   53.0   42.0   37.0   32.0   20.0   15.0   11.0   1.0
2019-06   105.0   101.0    96.0    87.0    84.0    80.0    75.0   69.0   65.0   60.0   56.0   46.0   40.0   32.0   30.0   18.0   10.0    6.0   2.0
2019-07   123.0   121.0   113.0   105.0    97.0    90.0    82.0   77.0   74.0   69.0   68.0   66.0   55.0   47.0   36.0   32.0   24.0   11.0   2.0
2019-08   127.0   122.0   117.0   112.0   108.0   100.0    94.0   82.0   78.0   69.0   65.0   58.0   53.0   43.0   35.0   24.0   17.0    8.0   2.0
2019-09   122.0   114.0   106.0   100.0    90.0    83.0    76.0   69.0   58.0   50.0   45.0   39.0   32.0   28.0   24.0   17.0    8.0    5.0   1.0
2019-10   164.0   161.0   151.0   138.0   129.0   121.0   114.0  102.0   95.0   88.0   81.0   72.0   62.0   56.0   48.0   40.0   22.0   16.0   5.0
2019-11   216.0   214.0   202.0   193.0   181.0   165.0   150.0  139.0  126.0  116.0  107.0   95.0   82.0   65.0   54.0   44.0   31.0   14.0   7.0
2019-12   341.0   327.0   311.0   294.0   274.0   261.0   245.0  225.0  210.0  191.0  171.0  136.0  117.0   96.0   79.0   55.0   45.0   26.0   6.0
2020-01  1167.0  1139.0  1089.0  1009.0   948.0   881.0   826.0  745.0  682.0  608.0  539.0  473.0  401.0  346.0  292.0  244.0  171.0   90.0  31.0
2020-02   280.0   274.0   262.0   247.0   239.0   226.0   204.0  184.0  169.0  158.0  141.0  125.0  105.0   89.0   68.0   55.0   29.0   18.0   3.0
2020-03   723.0   713.0   668.0   629.0   581.0   537.0   499.0  462.0  419.0  384.0  340.0  293.0  268.0  215.0  172.0  136.0  103.0   67.0  19.0
2020-04  1544.0  1502.0  1420.0  1337.0  1256.0  1149.0  1065.0  973.0  892.0  795.0  715.0  637.0  538.0  463.0  371.0  283.0  199.0  111.0  29.0
2020-05  1355.0  1313.0  1241.0  1175.0  1102.0  1046.0   970.0  890.0  805.0  726.0  652.0  569.0  488.0  415.0  331.0  255.0  180.0   99.0  19.0
2020-06  1042.0  1009.0   949.0   886.0   834.0   784.0   740.0  670.0  611.0  558.0  493.0  438.0  380.0  312.0  257.0  195.0  125.0   78.0   NaN
2020-07   719.0   698.0   663.0   624.0   595.0   547.0   512.0  460.0  424.0  387.0  341.0  301.0  256.0  215.0  172.0  124.0   90.0    NaN   NaN
2020-08   655.0   633.0   605.0   566.0   537.0   492.0   453.0  417.0  377.0  333.0  294.0  259.0  222.0  189.0  162.0  118.0    NaN    NaN   NaN
2020-09   715.0   687.0   647.0   617.0   562.0   521.0   479.0  445.0  408.0  371.0  331.0  297.0  257.0  208.0  165.0    NaN    NaN    NaN   NaN
2020-10   345.0   333.0   313.0   297.0   284.0   267.0   252.0  225.0  201.0  183.0  159.0  141.0  123.0  108.0    NaN    NaN    NaN    NaN   NaN
2020-11  1254.0  1221.0  1162.0  1094.0  1027.0   965.0   892.0  816.0  743.0  682.0  607.0  549.0  464.0    NaN    NaN    NaN    NaN    NaN   NaN
2020-12   387.0   379.0   352.0   338.0   319.0   292.0   275.0  257.0  230.0  207.0  185.0  157.0    NaN    NaN    NaN    NaN    NaN    NaN   NaN
2021-01   805.0   782.0   742.0   692.0   649.0   599.0   551.0  500.0  463.0  417.0  371.0    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN
2021-02   469.0   458.0   434.0   407.0   380.0   357.0   336.0  317.0  296.0  263.0    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN
2021-03  1540.0  1491.0  1390.0  1302.0  1221.0  1128.0  1049.0  967.0  864.0    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN
2021-04  1265.0  1221.0  1145.0  1086.0  1006.0   937.0   862.0  793.0    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN
2021-05   558.0   548.0   520.0   481.0   446.0   417.0   389.0    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN
2021-06   607.0   589.0   560.0   517.0   484.0   455.0     NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN
2021-07   597.0   572.0   543.0   511.0   477.0     NaN     NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN
2021-08   923.0   902.0   850.0   792.0     NaN     NaN     NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN
2021-09   975.0   952.0   899.0     NaN     NaN     NaN     NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN
2021-10   647.0   628.0     NaN     NaN     NaN     NaN     NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN
2021-11   131.0     NaN     NaN     NaN     NaN     NaN     NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN

如您所见,对于每个时段,我从0开始,直到最后一个可用时段。现在,我的代码是:

vectors = []
for i in pivot_period.index:
    vectors.append(list(pivot_period.loc[i]))

fig = px.area(y=[i for i in vectors])

如果绘制图形,您将看到x轴是周期数。然而,当我尝试实现日期(即索引)时,只要我有18个句点而不是36个日期,它就会返回错误的长度。我的想法是,策划这样的事情(很抱歉这张糟糕的照片):

在某种程度上,可以可视化每个向量在其自己的时间轴中的衰减。有什么想法吗?

共有1个答案

贺玉石
2023-03-14
  • 从该数据生成面积图很简单:px。面积(df,x=df.index,y=df.columns)
  • 我看不到此数据集中的作业/任务来自何处,以匹配所附的图像
df = pd.read_csv(io.StringIO("""periods      0       1       2       3       4       5       6      7      8      9      10     11     12     13     14     15     16     17    18
start                                                                                                                                             
2018-12     2.0     2.0     2.0     2.0     2.0     2.0     2.0    2.0    1.0    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN
2019-01   252.0   240.0   228.0   208.0   199.0   182.0   168.0  152.0  141.0  132.0  120.0  108.0   91.0   77.0   66.0   52.0   37.0   19.0   7.0
2019-02   140.0   135.0   129.0   123.0   114.0   101.0    99.0   91.0   84.0   74.0   62.0   49.0   45.0   39.0   33.0   26.0   20.0   10.0   3.0
2019-03    97.0    93.0    85.0    79.0    73.0    68.0    62.0   60.0   54.0   50.0   45.0   41.0   37.0   31.0   23.0   18.0   11.0    4.0   NaN
2019-04    92.0    90.0    86.0    82.0    78.0    73.0    67.0   58.0   51.0   46.0   41.0   38.0   36.0   34.0   32.0   19.0   14.0    3.0   1.0
2019-05   110.0   106.0    98.0    94.0    88.0    84.0    81.0   74.0   66.0   64.0   61.0   53.0   42.0   37.0   32.0   20.0   15.0   11.0   1.0
2019-06   105.0   101.0    96.0    87.0    84.0    80.0    75.0   69.0   65.0   60.0   56.0   46.0   40.0   32.0   30.0   18.0   10.0    6.0   2.0
2019-07   123.0   121.0   113.0   105.0    97.0    90.0    82.0   77.0   74.0   69.0   68.0   66.0   55.0   47.0   36.0   32.0   24.0   11.0   2.0
2019-08   127.0   122.0   117.0   112.0   108.0   100.0    94.0   82.0   78.0   69.0   65.0   58.0   53.0   43.0   35.0   24.0   17.0    8.0   2.0
2019-09   122.0   114.0   106.0   100.0    90.0    83.0    76.0   69.0   58.0   50.0   45.0   39.0   32.0   28.0   24.0   17.0    8.0    5.0   1.0
2019-10   164.0   161.0   151.0   138.0   129.0   121.0   114.0  102.0   95.0   88.0   81.0   72.0   62.0   56.0   48.0   40.0   22.0   16.0   5.0
2019-11   216.0   214.0   202.0   193.0   181.0   165.0   150.0  139.0  126.0  116.0  107.0   95.0   82.0   65.0   54.0   44.0   31.0   14.0   7.0
2019-12   341.0   327.0   311.0   294.0   274.0   261.0   245.0  225.0  210.0  191.0  171.0  136.0  117.0   96.0   79.0   55.0   45.0   26.0   6.0
2020-01  1167.0  1139.0  1089.0  1009.0   948.0   881.0   826.0  745.0  682.0  608.0  539.0  473.0  401.0  346.0  292.0  244.0  171.0   90.0  31.0
2020-02   280.0   274.0   262.0   247.0   239.0   226.0   204.0  184.0  169.0  158.0  141.0  125.0  105.0   89.0   68.0   55.0   29.0   18.0   3.0
2020-03   723.0   713.0   668.0   629.0   581.0   537.0   499.0  462.0  419.0  384.0  340.0  293.0  268.0  215.0  172.0  136.0  103.0   67.0  19.0
2020-04  1544.0  1502.0  1420.0  1337.0  1256.0  1149.0  1065.0  973.0  892.0  795.0  715.0  637.0  538.0  463.0  371.0  283.0  199.0  111.0  29.0
2020-05  1355.0  1313.0  1241.0  1175.0  1102.0  1046.0   970.0  890.0  805.0  726.0  652.0  569.0  488.0  415.0  331.0  255.0  180.0   99.0  19.0
2020-06  1042.0  1009.0   949.0   886.0   834.0   784.0   740.0  670.0  611.0  558.0  493.0  438.0  380.0  312.0  257.0  195.0  125.0   78.0   NaN
2020-07   719.0   698.0   663.0   624.0   595.0   547.0   512.0  460.0  424.0  387.0  341.0  301.0  256.0  215.0  172.0  124.0   90.0    NaN   NaN
2020-08   655.0   633.0   605.0   566.0   537.0   492.0   453.0  417.0  377.0  333.0  294.0  259.0  222.0  189.0  162.0  118.0    NaN    NaN   NaN
2020-09   715.0   687.0   647.0   617.0   562.0   521.0   479.0  445.0  408.0  371.0  331.0  297.0  257.0  208.0  165.0    NaN    NaN    NaN   NaN
2020-10   345.0   333.0   313.0   297.0   284.0   267.0   252.0  225.0  201.0  183.0  159.0  141.0  123.0  108.0    NaN    NaN    NaN    NaN   NaN
2020-11  1254.0  1221.0  1162.0  1094.0  1027.0   965.0   892.0  816.0  743.0  682.0  607.0  549.0  464.0    NaN    NaN    NaN    NaN    NaN   NaN
2020-12   387.0   379.0   352.0   338.0   319.0   292.0   275.0  257.0  230.0  207.0  185.0  157.0    NaN    NaN    NaN    NaN    NaN    NaN   NaN
2021-01   805.0   782.0   742.0   692.0   649.0   599.0   551.0  500.0  463.0  417.0  371.0    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN
2021-02   469.0   458.0   434.0   407.0   380.0   357.0   336.0  317.0  296.0  263.0    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN
2021-03  1540.0  1491.0  1390.0  1302.0  1221.0  1128.0  1049.0  967.0  864.0    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN
2021-04  1265.0  1221.0  1145.0  1086.0  1006.0   937.0   862.0  793.0    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN
2021-05   558.0   548.0   520.0   481.0   446.0   417.0   389.0    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN
2021-06   607.0   589.0   560.0   517.0   484.0   455.0     NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN
2021-07   597.0   572.0   543.0   511.0   477.0     NaN     NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN
2021-08   923.0   902.0   850.0   792.0     NaN     NaN     NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN
2021-09   975.0   952.0   899.0     NaN     NaN     NaN     NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN
2021-10   647.0   628.0     NaN     NaN     NaN     NaN     NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN
2021-11   131.0     NaN     NaN     NaN     NaN     NaN     NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN""")
           ,sep="\s+").drop(0).set_index("periods")

px.area(df, x=df.index, y=df.columns)
 类似资料:
  • 问题内容: matplotlib如何用该数据绘制图形。问题在于可视化从第2列到第3列的距离。最后,它看起来应该像甘特图。 我需要为列1提供2种颜色。对于y轴,选择列0,对于x轴,请选择列2和3。对于每一行,应绘制一条线。第2列是开始时间,第3列是停止时间。 问题答案: 如果我对您的理解正确,则希望在第3列和第4列的x值之间绘制一条水平线,而y值等于在第0列中的水平线。要在给定的y值上绘制一条水平线

  • 帮助我正试图用plotly绘制甘特图,但我没有找到一种方法。甘特图类似于水平条形图,每个条形图都有一个“起点”坐标。所以它看起来像: 我找不到让条形图中的“条形图”从特定的X坐标开始的方法。有什么提示/技巧/提示吗?

  • 我不熟悉plotly,我正在使用px创建甘特图。时间表。我的数据集中有三类数据,一类是具有开始和结束时间的普通任务,另一类是开始和结束时间相同的两种类型的任务。我希望普通任务是一个矩形(这是如何绘制的),其他两个任务有一个沙漏标记和一个三角形标记,而不是一条很细的线? 这是我的数据的样子: 样本数据: 代码: 例子: Excel中的样本图 我有什么办法可以做到这一点吗? 谢谢!

  • 我不熟悉plotly,我有一些start=int和finish=int(以抽象时间单位)的任务。但x轴默认为日期格式。我想将x轴设置为数字格式(0,1,2…) 这是我的代码: df看起来像: 任何建议!

  • 甘特图用于比较类别之间的数据。此外,它还可用于识别每个过程所花费的时间。 它显示了一段时间内任务值的进展。它在一段时间内广泛用于项目管理和其他类型的变异研究。 除时间维度外,甘特图也采用维度和度量。 例如,使用Sample-Superstore数据源,可以按照每种类型的发运模式进行运输。对于创建,甘特图遵循程序如下: 第1步:转到工作表。 单击“标记(Marks)”窗格中的下拉按钮。 从给定列表中

  • 主要内容:什么是JFreeChart 甘特图,JFreeChart 甘特图的示例什么是JFreeChart 甘特图 甘特图是一种条形图,常用于计划和安排项目任务和事件。 下图显示了 JFreeChart 库中包含的甘特图的一些演示版本: JFreeChart 甘特图的示例 让我们以人口数量作为样本数据。 软件开发阶段 预计日期 实际日期   需求分析 2017-07-03 2017-07-07 2017-07-03 2017-07-05 需求设计 2017-07-10 201