|
import gradio as gr |
|
import csv |
|
import matplotlib.pyplot as plt |
|
import io |
|
from PIL import Image |
|
|
|
def display_emissions_data_and_chart(tire_id): |
|
file_path = 'predictions.csv' |
|
try: |
|
with open(file_path, mode='r', newline='') as file: |
|
reader = csv.DictReader(file) |
|
for row in reader: |
|
if row['Identifier'] == tire_id: |
|
|
|
emissions_labels = [ |
|
'Predicted Material CO2', |
|
'Raw Material Transportation CO2', |
|
'Fuel CO2', |
|
'Plant Energy Consumption CO2' |
|
] |
|
emissions_values = [ |
|
float(row.get('Predicted Material CO2 Emissions', 0)), |
|
float(row.get('Raw Material Transportation CO2 Emissions', 0)), |
|
float(row.get('Fuel CO2 Emissions', 0)), |
|
float(row.get('Plant Energy Consumption CO2 Emissions', 0)) |
|
] |
|
|
|
|
|
fig, ax = plt.subplots(figsize=(9, 6)) |
|
ax.pie(emissions_values, labels=emissions_labels, autopct='%1.1f%%', startangle=90) |
|
ax.axis('equal') |
|
|
|
buf = io.BytesIO() |
|
plt.savefig(buf, format='png', bbox_inches='tight') |
|
buf.seek(0) |
|
plt.close(fig) |
|
|
|
|
|
buf_image = Image.open(buf) |
|
return buf_image |
|
|
|
except FileNotFoundError: |
|
return "The predictions.csv file was not found." |
|
|
|
|
|
def get_emissions_data(tire_id): |
|
image = display_emissions_data_and_chart(tire_id) |
|
if isinstance(image, Image.Image): |
|
return image |
|
else: |
|
|
|
return Image.new('RGB', (200, 200), color='red') |
|
|
|
|
|
with gr.Blocks() as demo: |
|
with gr.Row(): |
|
tire_id_input = gr.Textbox(label="Enter Tire ID") |
|
submit_button = gr.Button("Submit") |
|
|
|
output_image = gr.Image(label="Emissions Data Chart") |
|
|
|
submit_button.click( |
|
fn=get_emissions_data, |
|
inputs=tire_id_input, |
|
outputs=output_image |
|
) |
|
|
|
demo.launch() |
|
|