Esmaeilkiani's picture
Update app.py
bb93356 verified
Raw History Blame
4.75 kB
import streamlit as st
import pandas as pd
import matplotlib.pyplot as plt
import plotly.graph_objects as go
# تنظیمات صفحه
st.set_page_config(page_title="اداره زراعت و کنترل محصول", layout="wide")
# عنوان برنامه
st.title("اداره زراعت و کنترل محصول")
# منوی کناری
st.sidebar.title("منو")
page = st.sidebar.selectbox("انتخاب صفحه", ["آپلود داده‌های رشد و ارتفاع", "آپلود داده‌های هواشناسی", "پیش بینی رشد مزارع نیشکر با استفاده از ماشین لرنینگ", "چت بات"])
if page == "آپلود داده‌های رشد و ارتفاع":
st.header("آپلود داده‌های رشد و ارتفاع")
upload_file = st.file_uploader("فایل CSV داده‌های رشد و ارتفاع را آپلود کنید", type=["csv"])
if upload_file is not None:
crop_data = pd.read_csv(upload_file)
st.write("نمایش داده‌ها:")
st.dataframe(crop_data)
# نمودار رشد
fig1, ax1 = plt.subplots()
for farm in crop_data["مزرعه"].unique():
farm_data = crop_data[crop_data["مزرعه"] == farm]
ax1.plot(farm_data["هفته"], farm_data["رشد"], label=farm)
ax1.set_title("رشد گیاه در هفته‌های مختلف")
ax1.set_xlabel("هفته")
ax1.set_ylabel("رشد")
ax1.legend()
st.pyplot(fig1)
# نمودار ارتفاع
fig2, ax2 = plt.subplots()
for farm in crop_data["مزرعه"].unique():
farm_data = crop_data[crop_data["مزرعه"] == farm]
ax2.plot(farm_data["هفته"], farm_data["ارتفاع"], label=farm)
ax2.set_title("ارتفاع گیاه در هفته‌های مختلف")
ax2.set_xlabel("هفته")
ax2.set_ylabel("ارتفاع")
ax2.legend()
st.pyplot(fig2)
# نمودار سه‌بعدی ارتفاع
st.header("نمودار سه‌بعدی ارتفاع")
farm_to_plot = st.selectbox("انتخاب مزرعه", crop_data["مزرعه"].unique())
farm_data = crop_data[crop_data["مزرعه"] == farm_to_plot]
farm_data = farm_data.astype(float) # تبدیل داده‌ها به float برای نمودار سه‌بعدی
fig3 = go.Figure(data=[go.Surface(z=farm_data.pivot_table(index='هفته', columns='مزرعه', values='ارتفاع').values)])
fig3.update_layout(title="نمودار سه‌بعدی ارتفاع مزرعه " + farm_to_plot, autosize=True)
st.plotly_chart(fig3)
elif page == "آپلود داده‌های هواشناسی":
st.header("آپلود داده‌های هواشناسی")
upload_weather_file = st.file_uploader("فایل CSV داده‌های هواشناسی را آپلود کنید", type=["csv"])
if upload_weather_file is not None:
weather_data = pd.read_csv(upload_weather_file)
st.write("نمایش داده‌ها:")
st.dataframe(weather_data)
# تحلیل داده‌های هواشناسی
fig4, ax4 = plt.subplots()
ax4.plot(weather_data["تاریخ"], weather_data["میانگین درجه حرارت"], label="میانگین درجه حرارت")
ax4.set_title("میانگین درجه حرارت در طول زمان")
ax4.set_xlabel("تاریخ")
ax4.set_ylabel("درجه حرارت")
st.pyplot(fig4)
fig5, ax5 = plt.subplots()
ax5.plot(weather_data["تاریخ"], weather_data["میانگین رطوبت نسبی (درصد)"], label="میانگین رطوبت نسبی", color="green")
ax5.set_title("میانگین رطوبت نسبی در طول زمان")
ax5.set_xlabel("تاریخ")
ax5.set_ylabel("رطوبت نسبی (درصد)")
st.pyplot(fig5)
elif page == "پیش بینی رشد مزارع نیشکر با استفاده از ماشین لرنینگ":
st.header("پیش بینی رشد مزارع نیشکر با استفاده از ماشین لرنینگ")
st.write("این قسمت در حال توسعه است...")
elif page == "چت بات":
st.header("چت بات")
st.write("در اینجا شما می‌توانید با چت بات صحبت کنید.")
# کد جاوا اسکریپت برای چت بات Botpress
botpress_script = """
<script src="https://cdn.botpress.cloud/webchat/v1/inject.js"></script>
<script src="https://mediafiles.botpress.cloud/29d24895-b0fa-4941-a3c4-8afa638f8b28/webchat/config.js" defer></script>
"""
st.components.v1.html(botpress_script, height=800)