Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| import pandas as pd | |
| import seaborn as sns | |
| import matplotlib.pyplot as plt | |
| from io import StringIO | |
| # Function to plot histogram | |
| def plot_histogram(file_contents, column, ax=None): | |
| # Read the CSV file | |
| custom_df = pd.read_csv(StringIO(file_contents)) | |
| # Plot histogram | |
| sns.histplot(custom_df[column], ax=ax) | |
| ax.set_title(f'Histogram for {column}') | |
| ax.set_xlabel(column) | |
| ax.set_ylabel('Frequency') | |
| # Function to plot scatter plot | |
| def plot_scatter(file_contents, x_axis, y_axis, ax=None): | |
| # Read the CSV file | |
| custom_df = pd.read_csv(StringIO(file_contents)) | |
| # Plot scatter plot | |
| sns.scatterplot(x=x_axis, y=y_axis, data=custom_df, ax=ax) | |
| ax.set_title(f'Scatter Plot ({x_axis} vs {y_axis})') | |
| ax.set_xlabel(x_axis) | |
| ax.set_ylabel(y_axis) | |
| def layout_fn(file, text, text_1, text_2): | |
| # Create the figure with subplots | |
| fig, axes = plt.subplots(1, 2, figsize=(16, 6)) | |
| # Check if data is uploaded and a column is selected for histogram | |
| if file and text: | |
| plot_histogram(file.getvalue(), text, ax=axes[0]) | |
| else: | |
| axes[0].text(0.5, 0.5, "Upload a CSV and select a column", ha='center', va='center') | |
| # Check if data is uploaded and both x and y columns are selected for scatter plot | |
| if file and text_1 and text_2: | |
| plot_scatter(file.getvalue(), text_1, text_2, ax=axes[1]) | |
| else: | |
| axes[1].text(0.5, 0.5, "Upload a CSV, select X and Y columns", ha='center', va='center') | |
| # Adjust layout | |
| fig.suptitle("Data Visualization") | |
| plt.tight_layout() | |
| return fig | |
| # Create the Gradio interface | |
| interface = gr.Interface( | |
| fn=layout_fn, | |
| inputs=[ | |
| gr.inputs.File(label="Upload CSV file"), | |
| gr.inputs.Dropdown(label="Select Column (Histogram)", choices=[]), | |
| gr.inputs.Dropdown(label="Select X-axis (Scatter)", choices=[]), | |
| gr.inputs.Dropdown(label="Select Y-axis (Scatter)", choices=[]), | |
| ], | |
| outputs="plot", | |
| title="Data Visualization Tool", | |
| description="Upload a CSV file, select columns for histogram and scatter plots.", | |
| ) | |
| def update_choices(file): | |
| if file: | |
| data = pd.read_csv(StringIO(file.getvalue())) | |
| choices = list(data.columns) | |
| interface.set_config( | |
| inputs=[ | |
| gr.inputs.File(label="Upload CSV file"), | |
| gr.inputs.Dropdown(label="Select Column (Histogram)", choices=choices), | |
| gr.inputs.Dropdown(label="Select X-axis (Scatter)", choices=choices), | |
| gr.inputs.Dropdown(label="Select Y-axis (Scatter)", choices=choices), | |
| ] | |
| ) | |
| interface.run(share=True,fn_change=update_choices) |