Update app.py
Browse files
app.py
CHANGED
|
@@ -2,6 +2,7 @@ import gradio as gr
|
|
| 2 |
import pandas as pd
|
| 3 |
import numpy as np
|
| 4 |
import plotly.express as px
|
|
|
|
| 5 |
|
| 6 |
# Pricing data
|
| 7 |
aws_instances = {
|
|
@@ -154,12 +155,41 @@ def generate_cost_comparison(
|
|
| 154 |
|
| 155 |
# Recommendation and Breakeven omitted for brevity
|
| 156 |
|
| 157 |
-
# Chart
|
| 158 |
df = pd.DataFrame(results)
|
| 159 |
colors = {r['provider']: c for r,c in zip(results, ['#FF9900','#4285F4','#D62828'])}
|
| 160 |
-
|
| 161 |
-
|
| 162 |
-
fig
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 163 |
|
| 164 |
html = f"""
|
| 165 |
<div style='padding:20px;font-family:Arial;'>
|
|
@@ -193,4 +223,4 @@ with gr.Blocks(title="Cloud Cost Estimator", theme=gr.themes.Soft(primary_hue="i
|
|
| 193 |
model_size, storage_gb, reserved_instances, spot_instances, multi_year_commitment],
|
| 194 |
outputs=[out_html, out_plot])
|
| 195 |
|
| 196 |
-
demo.launch()
|
|
|
|
| 2 |
import pandas as pd
|
| 3 |
import numpy as np
|
| 4 |
import plotly.express as px
|
| 5 |
+
import plotly.graph_objects as go
|
| 6 |
|
| 7 |
# Pricing data
|
| 8 |
aws_instances = {
|
|
|
|
| 155 |
|
| 156 |
# Recommendation and Breakeven omitted for brevity
|
| 157 |
|
| 158 |
+
# Chart with annotations
|
| 159 |
df = pd.DataFrame(results)
|
| 160 |
colors = {r['provider']: c for r,c in zip(results, ['#FF9900','#4285F4','#D62828'])}
|
| 161 |
+
|
| 162 |
+
# Create figure using plotly graph objects for more control
|
| 163 |
+
fig = go.Figure()
|
| 164 |
+
|
| 165 |
+
# Add bars
|
| 166 |
+
for i, row in df.iterrows():
|
| 167 |
+
fig.add_trace(go.Bar(
|
| 168 |
+
x=[row['provider']],
|
| 169 |
+
y=[row['cost']],
|
| 170 |
+
name=row['provider'],
|
| 171 |
+
marker_color=colors[row['provider']]
|
| 172 |
+
))
|
| 173 |
+
|
| 174 |
+
# Add annotations on top of each bar
|
| 175 |
+
for i, row in df.iterrows():
|
| 176 |
+
fig.add_annotation(
|
| 177 |
+
x=row['provider'],
|
| 178 |
+
y=row['cost'],
|
| 179 |
+
text=f"${row['cost']:.2f}",
|
| 180 |
+
showarrow=False,
|
| 181 |
+
yshift=10, # Position above the bar
|
| 182 |
+
font=dict(size=14)
|
| 183 |
+
)
|
| 184 |
+
|
| 185 |
+
# Update layout
|
| 186 |
+
fig.update_layout(
|
| 187 |
+
showlegend=False,
|
| 188 |
+
height=500,
|
| 189 |
+
yaxis=dict(title='Monthly Cost ($)', tickprefix='$'),
|
| 190 |
+
xaxis=dict(title=''),
|
| 191 |
+
title='Cost Comparison'
|
| 192 |
+
)
|
| 193 |
|
| 194 |
html = f"""
|
| 195 |
<div style='padding:20px;font-family:Arial;'>
|
|
|
|
| 223 |
model_size, storage_gb, reserved_instances, spot_instances, multi_year_commitment],
|
| 224 |
outputs=[out_html, out_plot])
|
| 225 |
|
| 226 |
+
demo.launch()
|