ghpk98 / OS-Term-Project

1 stars 1 forks source link

Python : GanttChart #8

Open SonHyegang opened 2 years ago

SonHyegang commented 2 years ago

plotly.figure_factory.create_gantt

plotly.figure_factory.create_gantt(df, colors=None, index_col=None, show_colorbar=False, reverse_colors=False, title='Gantt Chart', bar_width=0.2, showgrid_x=False, showgrid_y=False, height=600, width=None, tasks=None, task_names=None, data=None, group_tasks=False, show_hover_fill=True)

deprecated, use instead plotly.express.timeline().

Returns figure for a gantt chart

Parameters
  • df ((arraylist)) – input data for gantt chart. Must be either a a dataframe or a list. If dataframe, the columns must include ‘Task’, ‘Start’ and ‘Finish’. Other columns can be included and used for indexing. If a list, its elements must be dictionaries with the same required column headers: ‘Task’, ‘Start’ and ‘Finish’.

  • colors ((strlistdicttuple)) – either a plotly scale name, an rgb or hex color, a color tuple or a list of colors. An rgb color is of the form ‘rgb(x, y, z)’ where x, y, z belong to the interval [0, 255] and a color tuple is a tuple of the form (a, b, c) where a, b and c belong to [0, 1]. If colors is a list, it must contain the valid color types aforementioned as its members. If a dictionary, all values of the indexing column must be keys in colors.

  • index_col ((strfloat)) – the column header (if df is a data frame) that will function as the indexing column. If df is a list, index_col must be one of the keys in all the items of df.

  • show_colorbar ((bool)) – determines if colorbar will be visible. Only applies if values in the index column are numeric.

  • show_hover_fill ((bool)) – enables/disables the hovertext for the filled area of the chart.

  • reverse_colors ((bool)) – reverses the order of selected colors

  • title ((str)) – the title of the chart

  • bar_width ((float)) – the width of the horizontal bars in the plot

  • showgrid_x ((bool)) – show/hide the x-axis grid

  • showgrid_y ((bool)) – show/hide the y-axis grid

  • height ((float)) – the height of the chart

  • width ((float)) – the width of the chart

Example 1: Simple Gantt Chart

>>> from plotly.figure_factory import create_gantt
>>> # Make data for chart
>>> df = [dict(Task="Job A", Start='2009-01-01', Finish='2009-02-30'),
...       dict(Task="Job B", Start='2009-03-05', Finish='2009-04-15'),
...       dict(Task="Job C", Start='2009-02-20', Finish='2009-05-30')]

>>> # Create a figure
>>> fig = create_gantt(df)
>>> fig.show()

Example 2: Index by Column with Numerical Entries

>>> from plotly.figure_factory import create_gantt

>>> # Make data for chart
>>> df = [dict(Task="Job A", Start='2009-01-01',
...            Finish='2009-02-30', Complete=10),
...       dict(Task="Job B", Start='2009-03-05',
...            Finish='2009-04-15', Complete=60),
...       dict(Task="Job C", Start='2009-02-20',
...            Finish='2009-05-30', Complete=95)]

>>> # Create a figure with Plotly colorscale
>>> fig = create_gantt(df, colors='Blues', index_col='Complete',
...                    show_colorbar=True, bar_width=0.5,
...                    showgrid_x=True, showgrid_y=True)
>>> fig.show()

Example 3: Index by Column with String Entries

>>> from plotly.figure_factory import create_gantt

>>> # Make data for chart
>>> df = [dict(Task="Job A", Start='2009-01-01',
...            Finish='2009-02-30', Resource='Apple'),
...       dict(Task="Job B", Start='2009-03-05',
...            Finish='2009-04-15', Resource='Grape'),
...       dict(Task="Job C", Start='2009-02-20',
...            Finish='2009-05-30', Resource='Banana')]

>>> # Create a figure with Plotly colorscale
>>> fig = create_gantt(df, colors=['rgb(200, 50, 25)', (1, 0, 1), '#6c4774'],
...                    index_col='Resource', reverse_colors=True,
...                    show_colorbar=True)
>>> fig.show()

Example 4: Use a dictionary for colors

>>> from plotly.figure_factory import create_gantt
>>> # Make data for chart
>>> df = [dict(Task="Job A", Start='2009-01-01',
...            Finish='2009-02-30', Resource='Apple'),
...       dict(Task="Job B", Start='2009-03-05',
...            Finish='2009-04-15', Resource='Grape'),
...       dict(Task="Job C", Start='2009-02-20',
...            Finish='2009-05-30', Resource='Banana')]

>>> # Make a dictionary of colors
>>> colors = {'Apple': 'rgb(255, 0, 0)',
...           'Grape': 'rgb(170, 14, 200)',
...           'Banana': (1, 1, 0.2)}

>>> # Create a figure with Plotly colorscale
>>> fig = create_gantt(df, colors=colors, index_col='Resource',
...                    show_colorbar=True)

>>> fig.show()

Example 5: Use a pandas dataframe

>>> from plotly.figure_factory import create_gantt
>>> import pandas as pd

>>> # Make data as a dataframe
>>> df = pd.DataFrame([['Run', '2010-01-01', '2011-02-02', 10],
...                    ['Fast', '2011-01-01', '2012-06-05', 55],
...                    ['Eat', '2012-01-05', '2013-07-05', 94]],
...                   columns=['Task', 'Start', 'Finish', 'Complete'])

>>> # Create a figure with Plotly colorscale
>>> fig = create_gantt(df, colors='Blues', index_col='Complete',
...                    show_colorbar=True, bar_width=0.5,
...                    showgrid_x=True, showgrid_y=True)
>>> fig.show()

Additional Example

import plotly.express as px
import pandas as pd

df = 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") # otherwise tasks are listed from the bottom up
fig.show()

newplot (7)

import plotly.express as px
import pandas as pd

df = 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()

newplot (8)


df = [dict(Task="Job-1", Start='2017-01-01', Finish='2017-02-02', Resource='Complete'),
      dict(Task="Job-1", Start='2017-02-15', Finish='2017-03-15', Resource='Incomplete'),
      dict(Task="Job-2", Start='2017-01-17', Finish='2017-02-17', Resource='Not Started'),
      dict(Task="Job-2", Start='2017-01-17', Finish='2017-02-17', Resource='Complete'),
      dict(Task="Job-3", Start='2017-03-10', Finish='2017-03-20', Resource='Not Started'),
      dict(Task="Job-3", Start='2017-04-01', Finish='2017-04-20', Resource='Not Started'),
      dict(Task="Job-3", Start='2017-05-18', Finish='2017-06-18', Resource='Not Started'),
      dict(Task="Job-4", Start='2017-01-14', Finish='2017-03-14', Resource='Complete')]

colors = {'Not Started': 'rgb(220, 0, 0)',
          'Incomplete': (1, 0.9, 0.16),
          'Complete': 'rgb(0, 255, 100)'}

fig = ff.create_gantt(df, colors=colors, index_col='Resource', show_colorbar=True,
                      group_tasks=True)
fig.show()

newplot (9)

SonHyegang commented 2 years ago

Ganttchart라는 이름을 가진 chart를 지원하지만 0000-00-00 type data만 지원해서 원하는 결과를 만들어내지 못합니다... 따라서 막대그래프 류의 기본 plot chart를 사용하였습니다.