做壞事,早晚都會被發現。所以中午做。 - 111-1 大數據分析 - 4.雷達圖

夜四技企資四甲
1101AD002
李亞泰


歷程檔案 Portfolio

    4.雷達圖

    # https://allaboutdataanalysis.medium.com/%E9%80%9940%E5%80%8Bpython%E8%A6%96%E8%A6%BA%E5%8C%96%E5%9C%96%E8%A1%A8%E6%A1%88%E4%BE%8B-%E5%BC%B7%E7%83%88%E5%BB%BA%E8%AD%B0%E6%94%B6%E8%97%8F-dd4f091c1022
    # 13.雷達圖

    # 從 Google API 上下載字體放到暫存資料夾底下
    !wget 'https://noto-website-2.storage.googleapis.com/pkgs/NotoSansCJKtc-hinted.zip'
    !mkdir /tmp/fonts
    !unzip -o NotoSansCJKtc-hinted.zip -d /tmp/fonts/
    !mv /tmp/fonts/NotoSansMonoCJKtc-Regular.otf /usr/share/fonts/truetype/NotoSansMonoCJKtc-Regular.otf -f
    !rm -rf /tmp/fonts
    !rm NotoSansCJKtc-hinted.zip

    # 指定字體
    import matplotlib.font_manager as font_manager
    import matplotlib.pyplot as plt

    font_dirs = ['/usr/share/fonts/truetype/']
    font_files = font_manager.findSystemFonts(fontpaths=font_dirs)

    for font_file in font_files:
    font_manager.fontManager.addfont(font_file)

    plt.rcParams['font.family'] = "Noto Sans Mono CJK TC"


    import matplotlib.pyplot as plt
    import pandas as pd
    from math import pi
    # 設定資料
    df = pd.DataFrame({
    'group': ['A', 'B', 'C', 'D'],
    '酸': [38, 1.5, 30, 4],
    '甜': [29, 10, 9, 34],
    '苦': [8, 39, 23, 24],
    '鹹': [7, 31, 33, 14],
    '辣': [28, 15, 32, 14]
    })
    # 目標數量
    categories = list(df)[1:]
    N = len(categories)
    # 角度
    angles = [n / float(N) * 2 * pi for n in range(N)]
    angles += angles[:1]
    # 初始化
    ax = plt.subplot(111, polar=True)
    # 設定第一處
    ax.set_theta_offset(pi / 2)
    ax.set_theta_direction(-1)
    # 新增背景資訊
    plt.xticks(angles[:-1], categories)
    ax.set_rlabel_position(0)
    plt.yticks([10, 20, 30], ["10", "20", "30"], color="grey", size=7)
    plt.ylim(0, 40)
    # 新增資料圖
    # 第一個
    values = df.loc[0].drop('group').values.flatten().tolist()
    values += values[:1]
    ax.plot(angles, values, linewidth=1, linestyle='solid', label="老大")
    ax.fill(angles, values, 'b', alpha=0.1)
    # 第二個
    values = df.loc[1].drop('group').values.flatten().tolist()
    values += values[:1]
    ax.plot(angles, values, linewidth=1, linestyle='solid', label="老二")
    ax.fill(angles, values, 'r', alpha=0.1)
    # 第三個
    values = df.loc[2].drop('group').values.flatten().tolist()
    values += values[:1]
    ax.plot(angles, values, linewidth=1, linestyle='solid', label="老三")
    ax.fill(angles, values, 'r', alpha=0.1)
    # 第四個
    values = df.loc[3].drop('group').values.flatten().tolist()
    values += values[:1]
    ax.plot(angles, values, linewidth=1, linestyle='solid', label="老四")
    ax.fill(angles, values, 'r', alpha=0.1)
    # 新增圖例
    plt.legend(loc='upper right', bbox_to_anchor=(0.1, 0.1))
    # 顯示
    plt.show()

    全部共 0則留言
    登入帳號密碼代表遵守學術網路規範


    文章分類 Labels


    最新文章 Top10

    中華科技大學數位化學習歷程 - 意見反應