Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import pandas as pd | |
| import matplotlib.pyplot as plt | |
| import numpy as np | |
| from mpl_toolkits.mplot3d import Axes3D | |
| from datasets import load_dataset | |
| ds = load_dataset("Esmaeilkiani/CroploggingSugarcane") | |
| # عنوان برنامه | |
| st.title("داشبورد نمایش دادههای مزرعه") | |
| # تبدیل ستونهای عددی به float | |
| data['هفته'] = pd.to_numeric(data['هفته'], errors='coerce') | |
| data['ارتفاع'] = pd.to_numeric(data['ارتفاع'], errors='coerce') | |
| data['رشد'] = pd.to_numeric(data['رشد'], errors='coerce') | |
| # حذف دادههای نامعتبر | |
| data.dropna(subset=['هفته', 'ارتفاع', 'رشد'], inplace=True) | |
| # ایجاد پنل کناری برای انتخاب مزرعه | |
| with st.sidebar: | |
| st.header("انتخاب مزرعه") | |
| # ایجاد لیست منحصر به فرد از مزارع | |
| farms = data['مزرعه'].unique() | |
| # ایجاد منوی کشویی برای انتخاب مزرعه | |
| selected_farm = st.selectbox("مزرعه مورد نظر را انتخاب کنید", farms) | |
| # ایجاد دکمه جستجو | |
| search_farm = st.text_input("نام مزرعه مورد نظر را بنویسید") | |
| if search_farm: | |
| selected_farm = search_farm | |
| # فیلتر کردن دادهها بر اساس مزرعه انتخاب شده | |
| farm_data = data[data['مزرعه'] == selected_farm] | |
| if not farm_data.empty: | |
| # استخراج دادههای هفته و ارتفاع | |
| weeks = sorted(farm_data['هفته'].unique()) | |
| heights = sorted(farm_data['ارتفاع'].unique()) | |
| # ایجاد شبکه برای موقعیتها و هفتهها | |
| X, Y = np.meshgrid(weeks, heights) | |
| # ایجاد دادههای ارتفاع | |
| Z = np.zeros_like(X, dtype=float) | |
| for i, week in enumerate(weeks): | |
| for j, height in enumerate(heights): | |
| value = farm_data[(farm_data['هفته'] == week) & (farm_data['ارتفاع'] == height)]['رشد'] | |
| if not value.empty: | |
| Z[j, i] = value.values[0] | |
| else: | |
| Z[j, i] = 0 # مقدار پیشفرض در صورت نبود داده | |
| # رسم نمودار سهبعدی | |
| fig = plt.figure(figsize=(12, 8)) | |
| ax = fig.add_subplot(111, projection='3d') | |
| surf = ax.plot_surface(X, Y, Z, cmap='viridis') | |
| # تنظیم برچسبهای محورها | |
| ax.set_xlabel('Weeks') | |
| ax.set_ylabel('Height') | |
| ax.set_zlabel('Growth') | |
| ax.set_title('3D Surface Plot of Field Height Over Weeks') | |
| # نمایش نمودار | |
| st.pyplot(fig) | |
| else: | |
| st.write("مزرعهای با این نام پیدا نشد.") | |