Update app.py
Browse files
app.py
CHANGED
|
@@ -3,6 +3,7 @@ import pandas as pd
|
|
| 3 |
import requests
|
| 4 |
import json
|
| 5 |
from io import StringIO
|
|
|
|
| 6 |
|
| 7 |
# 自訂 CSS 確保標題不換行並調整圖片大小
|
| 8 |
st.markdown("""
|
|
@@ -49,11 +50,11 @@ col1, col2 = st.columns(2)
|
|
| 49 |
with col1:
|
| 50 |
if st.button("上一頁", disabled=st.session_state.page <= 0):
|
| 51 |
st.session_state.page -= 1
|
| 52 |
-
st.rerun()
|
| 53 |
with col2:
|
| 54 |
if st.button("下一頁", disabled=st.session_state.page >= len(image_data) - 1):
|
| 55 |
st.session_state.page += 1
|
| 56 |
-
st.rerun()
|
| 57 |
|
| 58 |
# 顯示當前頁數
|
| 59 |
st.write(f"頁面: {st.session_state.page + 1} / {len(image_data)}")
|
|
@@ -61,7 +62,7 @@ st.write(f"頁面: {st.session_state.page + 1} / {len(image_data)}")
|
|
| 61 |
# 分隔線
|
| 62 |
st.markdown("---")
|
| 63 |
|
| 64 |
-
#
|
| 65 |
def process_number(number):
|
| 66 |
"""查詢特定數字並返回結果"""
|
| 67 |
url = f"https://www.angio.net/newpi/piquery?q={number}"
|
|
@@ -156,6 +157,39 @@ def main():
|
|
| 156 |
file_name="processed_results.csv",
|
| 157 |
mime="text/csv"
|
| 158 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 159 |
|
| 160 |
except Exception as e:
|
| 161 |
st.error(f"處理檔案時發生錯誤: {str(e)}")
|
|
|
|
| 3 |
import requests
|
| 4 |
import json
|
| 5 |
from io import StringIO
|
| 6 |
+
import plotly.express as px # 引入 Plotly 來繪製長條圖
|
| 7 |
|
| 8 |
# 自訂 CSS 確保標題不換行並調整圖片大小
|
| 9 |
st.markdown("""
|
|
|
|
| 50 |
with col1:
|
| 51 |
if st.button("上一頁", disabled=st.session_state.page <= 0):
|
| 52 |
st.session_state.page -= 1
|
| 53 |
+
st.rerun()
|
| 54 |
with col2:
|
| 55 |
if st.button("下一頁", disabled=st.session_state.page >= len(image_data) - 1):
|
| 56 |
st.session_state.page += 1
|
| 57 |
+
st.rerun()
|
| 58 |
|
| 59 |
# 顯示當前頁數
|
| 60 |
st.write(f"頁面: {st.session_state.page + 1} / {len(image_data)}")
|
|
|
|
| 62 |
# 分隔線
|
| 63 |
st.markdown("---")
|
| 64 |
|
| 65 |
+
# 查詢數字的函數
|
| 66 |
def process_number(number):
|
| 67 |
"""查詢特定數字並返回結果"""
|
| 68 |
url = f"https://www.angio.net/newpi/piquery?q={number}"
|
|
|
|
| 157 |
file_name="processed_results.csv",
|
| 158 |
mime="text/csv"
|
| 159 |
)
|
| 160 |
+
|
| 161 |
+
# 新增長條圖功能
|
| 162 |
+
st.subheader("查詢結果長條圖")
|
| 163 |
+
# 篩選有效數據(查詢結果不為 "數字不符規定" 且不為 None)
|
| 164 |
+
valid_df = df[df['查詢結果'].notna() & (df['查詢結果'] != "數字不符規定")].copy()
|
| 165 |
+
|
| 166 |
+
if not valid_df.empty:
|
| 167 |
+
# 將查詢結果轉為數值型
|
| 168 |
+
valid_df['查詢結果'] = valid_df['查詢結果'].astype(float)
|
| 169 |
+
# 拼接姓名和幸運號碼作為橫軸標籤
|
| 170 |
+
valid_df['姓名_幸運號碼'] = valid_df['姓名'] + "_" + valid_df['幸運號碼']
|
| 171 |
+
# 按照查詢結果從大到小排序
|
| 172 |
+
valid_df = valid_df.sort_values(by='查詢結果', ascending=False)
|
| 173 |
+
|
| 174 |
+
# 使用 Plotly 繪製長條圖
|
| 175 |
+
fig = px.bar(
|
| 176 |
+
valid_df,
|
| 177 |
+
x='姓名_幸運號碼',
|
| 178 |
+
y='查詢結果',
|
| 179 |
+
labels={'姓名_幸運號碼': '姓名與幸運號碼', '查詢結果': '查詢結果數值'},
|
| 180 |
+
title="幸運數字查詢結果長條圖(按數值從大到小排序)"
|
| 181 |
+
)
|
| 182 |
+
# 調整圖表佈局
|
| 183 |
+
fig.update_layout(
|
| 184 |
+
xaxis_title="姓名與幸運號碼",
|
| 185 |
+
yaxis_title="查詢結果數值",
|
| 186 |
+
xaxis_tickangle=-45, # 旋轉橫軸標籤以避免重疊
|
| 187 |
+
margin=dict(l=50, r=50, t=80, b=150) # 增加底部邊距以顯示完整標籤
|
| 188 |
+
)
|
| 189 |
+
# 顯示圖表
|
| 190 |
+
st.plotly_chart(fig, use_container_width=True)
|
| 191 |
+
else:
|
| 192 |
+
st.warning("無有效的查詢結果可供繪製長條圖。請確認資料是否正確。")
|
| 193 |
|
| 194 |
except Exception as e:
|
| 195 |
st.error(f"處理檔案時發生錯誤: {str(e)}")
|