Esmaeilkiani commited on
Commit
5cffa45
·
verified ·
1 Parent(s): 279e8a7

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +82 -93
app.py CHANGED
@@ -1,102 +1,91 @@
1
  import streamlit as st
2
  import pandas as pd
3
  import matplotlib.pyplot as plt
4
- import seaborn as sns
5
- from mpl_toolkits.mplot3d import Axes3D
6
- import numpy as np
7
 
8
  # تنظیمات صفحه
9
  st.set_page_config(page_title="اداره زراعت و کنترل محصول", layout="wide")
10
- st.title("اداره زراعت و کنترل محصول")
11
 
12
- # استایل CSS سفارشی برای نوار کناری
13
- st.markdown(
14
- """
15
- <style>
16
- .sidebar .sidebar-content {
17
- background-color: #2ecc71;
18
- }
19
- .sidebar .sidebar-content .element-container button {
20
- background-color: #27ae60;
21
- color: white;
22
- }
23
- .sidebar .sidebar-content .element-container input {
24
- background-color: #ecf0f1;
25
- color: black;
26
- }
27
- </style>
28
- """,
29
- unsafe_allow_html=True
30
- )
31
 
32
- # نوار کناری
33
  st.sidebar.title("منو")
34
- uploaded_file = st.sidebar.file_uploader("آپلود فایل CSV داده‌های رشد و ارتفاع", type=["csv"])
35
-
36
- if uploaded_file is not None:
37
- df = pd.read_csv(uploaded_file)
38
-
39
- # نمایش داده‌ها
40
- st.subheader("داده‌های آپلود شده")
41
- st.write(df)
42
-
43
- # انتخاب مزرعه
44
- selected_farm = st.sidebar.selectbox("انتخاب مزرعه", df['مزرعه'].unique())
45
-
46
- # جستجوی مزرعه
47
- search_farm = st.sidebar.text_input("جستجوی مزرعه بر اساس نام")
48
- if st.sidebar.button("جستجو"):
49
- if search_farm in df['مزرعه'].values:
50
- selected_farm = search_farm
51
- else:
52
- st.sidebar.write("مزرعه یافت نشد")
53
-
54
- if selected_farm:
55
- farm_data = df[df['مزرعه'] == selected_farm]
56
-
57
- # اطمینان از تبدیل داده‌ها به نوع float
58
- farm_data['هفته'] = pd.to_numeric(farm_data['هفته'], errors='coerce')
59
- farm_data['ارتفاع'] = pd.to_numeric(farm_data['ارتفاع'], errors='coerce')
60
- farm_data['رشد'] = pd.to_numeric(farm_data['رشد'], errors='coerce')
61
-
62
- # نمایش نمودار رشد و ارتفاع
63
- st.subheader(f"نمودارهای رشد و ارتفاع برای مزرعه {selected_farm}")
64
-
65
- fig, axes = plt.subplots(1, 2, figsize=(15, 5))
66
- sns.lineplot(ax=axes[0], data=farm_data, x='هفته', y='رشد', marker='o')
67
- axes[0].set_title(f"رشد مزرعه {selected_farm} در هفته‌های مختلف")
68
- axes[0].set_xlabel("هفته")
69
- axes[0].set_ylabel("رشد")
70
-
71
- sns.lineplot(ax=axes[1], data=farm_data, x='هفته', y='ارتفاع', marker='o', color='r')
72
- axes[1].set_title(f"ارتفاع مزرعه {selected_farm} در هفته‌های مختلف")
73
- axes[1].set_xlabel("هفته")
74
- axes[1].set_ylabel("ارتفاع")
75
-
76
- st.pyplot(fig)
77
-
78
- # نمایش نمودار سه‌بعدی ارتفاع
79
- st.subheader("نمودار سه‌بعدی ارتفاع")
80
- fig = plt.figure()
81
- ax = fig.add_subplot(111, projection='3d')
82
-
83
- # تولید داده‌های سه‌بعدی
84
- X, Y = np.meshgrid(farm_data['هفته'], farm_data['ارتفاع'])
85
- Z = farm_data['ارتفاع'].values
86
-
87
- ax.plot_surface(X, Y, Z[:, np.newaxis], cmap='viridis', edgecolor='none')
88
- ax.set_title(f"ارتفاع مزرعه {selected_farm} در هفته‌های مختلف")
89
- ax.set_xlabel("هفته")
90
- ax.set_ylabel("ارتفاع")
91
- ax.set_zlabel("ارتفاع")
92
- st.pyplot(fig)
93
-
94
- # گزارش تحلیل
95
- st.subheader("گزارش تحلیل")
96
- avg_growth = farm_data['رشد'].mean()
97
- avg_height = farm_data['ارتفاع'].mean()
98
- st.write(f"میانگین رشد هفته جاری: {avg_growth:.2f}")
99
- st.write(f"میانگین ارتفاع هفته جاری: {avg_height:.2f}")
100
-
101
- else:
102
- st.write("لطفا یک فایل CSV آپلود کنید.")
 
 
 
 
 
 
 
 
 
 
1
  import streamlit as st
2
  import pandas as pd
3
  import matplotlib.pyplot as plt
4
+ import plotly.graph_objects as go
 
 
5
 
6
  # تنظیمات صفحه
7
  st.set_page_config(page_title="اداره زراعت و کنترل محصول", layout="wide")
 
8
 
9
+ # عنوان برنامه
10
+ st.title("اداره زراعت و کنترل محصول")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
 
12
+ # منوی کناری
13
  st.sidebar.title("منو")
14
+ page = st.sidebar.selectbox("انتخاب صفحه", ["آپلود داده‌های رشد و ارتفاع", "آپلود داده‌های هواشناسی", "پیش بینی رشد مزارع نیشکر با استفاده از ماشین لرنینگ", "چت بات"])
15
+
16
+ if page == "آپلود داده‌های رشد و ارتفاع":
17
+ st.header("آپلود داده‌های رشد و ارتفاع")
18
+ upload_file = st.file_uploader("فایل CSV داده‌های رشد و ارتفاع را آپلود کنید", type=["csv"])
19
+
20
+ if upload_file is not None:
21
+ crop_data = pd.read_csv(upload_file)
22
+ st.write("نمایش داده‌ها:")
23
+ st.dataframe(crop_data)
24
+
25
+ # نمودار رشد
26
+ fig1, ax1 = plt.subplots()
27
+ for farm in crop_data["مزرعه"].unique():
28
+ farm_data = crop_data[crop_data["مزرعه"] == farm]
29
+ ax1.plot(farm_data["هفته"], farm_data["رشد"], label=farm)
30
+ ax1.set_title("رشد گیاه در هفته‌های مختلف")
31
+ ax1.set_xlabel("هفته")
32
+ ax1.set_ylabel("رشد")
33
+ ax1.legend()
34
+ st.pyplot(fig1)
35
+
36
+ # نمودار ارتفاع
37
+ fig2, ax2 = plt.subplots()
38
+ for farm in crop_data["مزرعه"].unique():
39
+ farm_data = crop_data[crop_data["مزرعه"] == farm]
40
+ ax2.plot(farm_data["هفته"], farm_data["ارتفاع"], label=farm)
41
+ ax2.set_title("ارتفاع گیاه در هفته‌های مختلف")
42
+ ax2.set_xlabel("هفته")
43
+ ax2.set_ylabel("ارتفاع")
44
+ ax2.legend()
45
+ st.pyplot(fig2)
46
+
47
+ # نمودار سه‌بعدی ارتفاع
48
+ st.header("نمودار سه‌بعدی ارتفاع")
49
+ farm_to_plot = st.selectbox("انتخاب مزرعه", crop_data["مزرعه"].unique())
50
+ farm_data = crop_data[crop_data["مزرعه"] == farm_to_plot]
51
+ fig3 = go.Figure(data=[go.Surface(z=farm_data.pivot_table(index='هفته', columns='مزرعه', values='ارتفاع').values)])
52
+ fig3.update_layout(title="نمودار سه‌بعدی ارتفاع مزرعه " + farm_to_plot, autosize=True)
53
+ st.plotly_chart(fig3)
54
+
55
+ elif page == "آپلود داده‌های هواشناسی":
56
+ st.header("آپلود داده‌های هواشناسی")
57
+ upload_weather_file = st.file_uploader("فایل CSV داده‌های هواشناسی را آپلود کنید", type=["csv"])
58
+
59
+ if upload_weather_file is not None:
60
+ weather_data = pd.read_csv(upload_weather_file)
61
+ st.write("نمایش داده‌ها:")
62
+ st.dataframe(weather_data)
63
+
64
+ # تحلیل داده‌های هواشناسی
65
+ fig4, ax4 = plt.subplots()
66
+ ax4.plot(weather_data["تاریخ"], weather_data["میانگین درجه حرارت"], label="میانگین درجه حرارت")
67
+ ax4.set_title("میانگین درجه حرارت در طول زمان")
68
+ ax4.set_xlabel("تاریخ")
69
+ ax4.set_ylabel("درجه حرارت")
70
+ st.pyplot(fig4)
71
+
72
+ fig5, ax5 = plt.subplots()
73
+ ax5.plot(weather_data["تاریخ"], weather_data["میانگین رطوبت نسبی (درصد)"], label="میانگین رطوبت نسبی", color="green")
74
+ ax5.set_title("میانگین رطوبت نسبی در طول زمان")
75
+ ax5.set_xlabel("تاریخ")
76
+ ax5.set_ylabel("رطوبت نسبی (درصد)")
77
+ st.pyplot(fig5)
78
+
79
+ elif page == "پیش بینی رشد مزارع نیشکر با استفاده از ماشین لرنینگ":
80
+ st.header("پیش بینی رشد مزارع نیشکر با استفاده از ماشین لرنینگ")
81
+ st.write("این قسمت در حال توسعه است...")
82
+
83
+ elif page == "چت بات":
84
+ st.header("چت بات")
85
+ st.write("در اینجا شما می‌توانید با چت بات صحبت کنید.")
86
+
87
+ # کد جاوا اسکریپت برای چت بات Botpress
88
+ st.markdown("""
89
+ <script src="https://cdn.botpress.cloud/webchat/v2/inject.js"></script>
90
+ <script src="https://mediafiles.botpress.cloud/29d24895-b0fa-4941-a3c4-8afa638f8b28/webchat/v2/config.js"></script>
91
+ """, unsafe_allow_html=True)