做壞事,早晚都會被發現。所以中午做。 - 111-1 大數據分析 - 4.雷達圖 |
|
|
4.雷達圖範例來源:https://www.zendei.com/article/74279.html 修改後colab連結:https://colab.research.google.com/drive/1NHEdzZOVeTtmAjzYwoNp2q1v3e5Baalk?usp=share_link # 1101AD002 # 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()
|
|
中華科技大學數位化學習歷程 - 意見反應 |