Spaces:
Sleeping
Sleeping
| import matplotlib.pyplot as plt | |
| import io | |
| import base64 | |
| def df_to_chart(df, chart_type="bar"): | |
| import pandas as pd | |
| plt.clf() | |
| y_col = df.columns[1] if len(df.columns) > 1 else None | |
| if y_col is not None and pd.api.types.is_numeric_dtype(df[y_col]): | |
| # Numeric y-column: plot as usual | |
| ax = df.plot(kind=chart_type, x=df.columns[0], y=y_col, legend=False) | |
| else: | |
| # Non-numeric: plot value counts of the first column | |
| value_counts = df[df.columns[0]].value_counts() | |
| ax = value_counts.plot(kind="bar") | |
| ax.set_xlabel(df.columns[0]) | |
| ax.set_ylabel("Count") | |
| buf = io.BytesIO() | |
| plt.savefig(buf, format="png") | |
| buf.seek(0) | |
| return base64.b64encode(buf.read()).decode("utf-8") | |