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