CoolFace
Apppublic

h2chen/test_matplotlib

sourceHugging Faceupdated 4mo agoView on Hugging Face
0likes
app.py63 linesDownload Raw Back to root
1import pandas as pd2import numpy as np3import matplotlib.pyplot as plt4from io import BytesIO5import requests6import streamlit as st7import matplotlib8zhfont = matplotlib.font_manager.FontProperties(fname='./SourceHanSansTW-Regular.otf')9 10"""11# 資料視覺化12(可補敘述).....13"""14 15def visualization(df):16    st.subheader("📈 自動產生的視覺化圖表")17 18    # 畫圖(使用前兩欄為例)19    #====以下是一個測試範例, 改成你自己的畫圖流程====20    if df.select_dtypes(include='number').shape[1] >= 2:21        df.iloc[:, :2].plot(kind='line')22        plt.title("前兩欄數值折線圖", fontproperties=zhfont)23        plt.xlabel("Index")24        plt.ylabel("Value")25        plt.tight_layout()        26    else:27        st.warning("資料中至少需要兩個數值欄位才能繪圖。")28    #=====================================29 30    # 圖片轉成 BytesIO 再顯示31    buf = BytesIO()32    plt.savefig(buf, format="png")33    st.image(buf)34    plt.close()35 36# 🚀 選擇資料輸入方式37option = st.radio("選擇資料來源:", ["上傳 CSV 檔", "輸入 CSV 網址"])38 39# 📂 檔案上傳40if option == "上傳 CSV 檔":41    uploaded_file = st.file_uploader("請選擇一個 CSV 檔案", type=["csv"])42    if uploaded_file is not None:43        try:44            data = pd.read_csv(uploaded_file)45            st.success("✅ 成功讀取檔案")46            st.write(data.head())47            visualization(data)48        except Exception as e:49            st.error(f"❌ 無法讀取檔案:{e}")50 51# 🌐 網址讀取52else:53    url = st.text_input("請輸入 CSV 檔案網址(例如 raw GitHub link)")54    if url:55        try:56            response = requests.get(url)57            response.raise_for_status()58            data = pd.read_csv(BytesIO(response.content))59            st.success("✅ 成功從網址載入資料")60            st.write(data.head())61            visualization(data)62        except Exception as e:63            st.error(f"❌ 無法讀取網址資料:{e}")