Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| import pandas as pd | |
| from shapely.geometry import Point, Polygon | |
| def load_csv(file): | |
| return pd.read_csv(file.name) | |
| def update_dropdowns(df): | |
| if df is None or df.empty: | |
| return gr.Dropdown(choices=[]), gr.Dropdown(choices=[]) | |
| columns = df.columns.tolist() # Index'i listeye çevir | |
| return gr.Dropdown(choices=columns), gr.Dropdown(choices=columns) | |
| def create_plot(df, x_col, y_col): | |
| if df is None or x_col not in df.columns or y_col not in df.columns: | |
| return None | |
| return { | |
| "x": df[x_col].tolist(), | |
| "y": df[y_col].tolist(), | |
| "color": "blue", | |
| "tooltip": df.columns.tolist(), | |
| "x_title": x_col, | |
| "y_title": y_col | |
| } | |
| def filter_points(event: gr.SelectData, df, x_col, y_col): | |
| if df is None or x_col not in df.columns or y_col not in df.columns: | |
| return pd.DataFrame() | |
| if not hasattr(filter_points, "points"): | |
| filter_points.points = [] | |
| filter_points.points.append((event.x, event.y)) | |
| if len(filter_points.points) < 3: | |
| return pd.DataFrame() | |
| try: | |
| polygon = Polygon(filter_points.points) | |
| mask = df[[x_col, y_col]].apply( | |
| lambda row: polygon.contains(Point(row[x_col], row[y_col])), | |
| axis=1 | |
| ) | |
| return df[mask] | |
| finally: | |
| filter_points.points = [] | |
| with gr.Blocks() as demo: | |
| gr.Markdown("## 🎯 Çalışan Son Sürüm") | |
| df_state = gr.State() | |
| with gr.Row(): | |
| csv_upload = gr.File(label="1. CSV Yükle", file_types=[".csv"]) | |
| x_col = gr.Dropdown(label="2. X Sütunu Seç") | |
| y_col = gr.Dropdown(label="3. Y Sütunu Seç") | |
| plot = gr.ScatterPlot( | |
| label="4. Lasso Tool ile Alan Seç", | |
| show_label=True, | |
| interactive=True | |
| ) | |
| results = gr.DataFrame(label="Seçilen Veriler") | |
| csv_upload.upload( | |
| load_csv, | |
| inputs=csv_upload, | |
| outputs=df_state | |
| ).then( | |
| update_dropdowns, | |
| inputs=df_state, | |
| outputs=[x_col, y_col] | |
| ) | |
| x_col.change( | |
| create_plot, | |
| inputs=[df_state, x_col, y_col], | |
| outputs=plot | |
| ) | |
| y_col.change( | |
| create_plot, | |
| inputs=[df_state, x_col, y_col], | |
| outputs=plot | |
| ) | |
| plot.select( | |
| filter_points, | |
| inputs=[df_state, x_col, y_col], | |
| outputs=results | |
| ) | |
| demo.launch() |