File size: 2,420 Bytes
588578a
 
e0d0f44
 
588578a
e0d0f44
d401e08
e0d0f44
 
 
 
d401e08
e0d0f44
 
0c3b8f9
 
 
e0d0f44
 
 
d74ff22
 
 
 
588578a
 
 
 
 
 
d401e08
ff0096b
588578a
2020bbe
d401e08
 
 
 
 
 
 
 
 
 
875d1be
 
 
f1f85ae
cb8a684
875d1be
f1f85ae
0c3b8f9
f1f85ae
0c3b8f9
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import altair as alt
import gradio as gr
import pandas as pd
import numpy as np


def plot_usage_volume(system1, users1, timeline1, system2, users2, timeline2, system3, users3, timeline3):
    # Create empty dataframe to hold usage data
    data = pd.DataFrame(columns=["System", "Month", "Usage"])

    # Generate usage data for each system based on typical rollout behaviors
    for i, system in enumerate([system1, system2, system3]):
        # Calculate the monthly usage volume based on the estimated number of users and timeline
        usage = np.concatenate([
            np.linspace(0, [users1, users2, users3][i], int([timeline1, timeline2, timeline3][i] * 0.25)),
            np.linspace([users1, users2, users3][i] * 0.5, [users1, users2, users3][i], int([timeline1, timeline2, timeline3][i] * 0.5)),
            np.linspace([users1, users2, users3][i], [users1, users2, users3][i] * 0.75, int([timeline1, timeline2, timeline3][i] * 0.25))
        ])

        # Add the usage data to the dataframe
        months = ["Month {}".format(j) for j in range(1, len(usage) + 1)]
        system_data = pd.DataFrame({"System": [system] * len(usage), "Month": months, "Usage": usage})
        data = pd.concat([data, system_data], axis=0)

    # Create a multiline plot of the usage volume for each system
    line = alt.Chart(data).mark_line().encode(
        x='Month:N',
        y='Usage:Q',
        color='System:N'
    ).properties(title="System Rollout Usage Volume Plot")

    # Return the plot as a Gradio output
    return line

# Define the input components
inputs = [
    gr.inputs.Textbox(label="System 1 Name", default="System1"),
    gr.inputs.Number(label="System 1 Users", default=1000),
    gr.inputs.Number(label="System 1 Timeline (months)", default=12),
    gr.inputs.Textbox(label="System 2 Name", default="System2"),
    gr.inputs.Number(label="System 2 Users", default=500),
    gr.inputs.Number(label="System 2 Timeline (months)", default=18),
    gr.inputs.Textbox(label="System 3 Name", default="System3"),
    gr.inputs.Number(label="System 3 Users", default=2000),
    gr.inputs.Number(label="System 3 Timeline (months)", default=24)
]

# Define the output component
output = gr.Plot(label="Usage Volume Plot")

# Create the interface
iface = gr.Interface(fn=plot_usage_volume, inputs=inputs, outputs=output, title="System Rollout Usage Volume Plot")

# Launch the interface
iface.launch()