成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

如何利用Python matplotlib繪制雷達圖

瀏覽:160日期:2022-07-01 16:00:01

本篇文章介紹使用matplotlib繪制雷達圖。

雷達圖也被稱為網絡圖,蜘蛛圖,星圖,蜘蛛網圖,是一個不規則的多邊形。雷達圖可以形象地展示相同事物的多維指標,雷達圖幾乎隨處可見,應用場景非常多。

一、matplotlib繪制圓形雷達圖

# coding=utf-8import numpy as npimport matplotlib.pyplot as plt results = [{'大學英語': 87, '高等數學': 79, '體育': 95, '計算機基礎': 92, '程序設計': 85}, {'大學英語': 80, '高等數學': 90, '體育': 91, '計算機基礎': 85, '程序設計': 88}]data_length = len(results[0])# 將極坐標根據數據長度進行等分angles = np.linspace(0, 2*np.pi, data_length, endpoint=False)labels = [key for key in results[0].keys()]score = [[v for v in result.values()] for result in results]# 使雷達圖數據封閉score_a = np.concatenate((score[0], [score[0][0]]))score_b = np.concatenate((score[1], [score[1][0]]))angles = np.concatenate((angles, [angles[0]]))labels = np.concatenate((labels, [labels[0]]))# 設置圖形的大小fig = plt.figure(figsize=(8, 6), dpi=100)# 新建一個子圖ax = plt.subplot(111, polar=True)# 繪制雷達圖ax.plot(angles, score_a, color=’g’)ax.plot(angles, score_b, color=’b’)# 設置雷達圖中每一項的標簽顯示ax.set_thetagrids(angles*180/np.pi, labels)# 設置雷達圖的0度起始位置ax.set_theta_zero_location(’N’)# 設置雷達圖的坐標刻度范圍ax.set_rlim(0, 100)# 設置雷達圖的坐標值顯示角度,相對于起始角度的偏移量ax.set_rlabel_position(270)ax.set_title('計算機專業大一(上)')plt.legend(['弓長張', '口天吳'], loc=’best’)plt.show()

運行結果:

如何利用Python matplotlib繪制雷達圖

繪制雷達圖需要先建立極坐標系,關于極坐標系可以自己了解一下。建立好極坐標后可以在極坐標中繪制折線圖、柱狀圖等,大部分情況,都是用折線圖,形成一個不規則的閉合多邊形。本文中用某高校大一的期末考試成績作為例子來演示雷達圖的效果。

linspace(): 用于將極坐標根據數據的維度進行等分,第一個參數傳入起始角度,第二參數傳入結束角度,第三個參數傳入分成多少等份。其他參數根據需要傳入,如endpoint默認為True,最后一個數據處于結束的角度,根據本例中前面的參數0~2π,應該設置為False,否則最后一個數據與第一個數據角度重疊了。

concatenate(): 使雷達圖的數據是環形封閉的,concatenate()函數的第一個參數是一個元組,元組中的每個元素是一個數組,concatenate()函數將這些數組連接到一起,組成一個新的數組。要讓繪制的雷達圖封閉,將數據的第一個值連接到數據的結尾即可。

本文用折線圖plot()來繪制雷達圖,使用figure()函數設置好圖形的大小和清晰度,然后使用subplot()函數來創建一張子圖。subplot()函數的第一個參數傳入長度為3的數字,第一個數字表示將畫布分成幾行,第二個數字表示將畫布分成幾列,第三個數字表示當前的子圖處于哪個位置(按從左至右、從上到下的順序排序),第三個數字不能超出前兩個數字切分的子圖數范圍。如111表示將畫布分成一行一列(只有一張子圖),當前的子圖處于第一張子圖中。在subplot()函數中,將polar參數設置True,得到的圖形才是極坐標。

極坐標系設置完成后,使用子圖對象ax調用折線圖函數plot(),即可繪出雷達圖。如果有多組數據,多次調用plot()函數即可。

使用set_thetagrids()函數設置雷達圖中每個維度的標簽和顯示位置。使用set_theta_zero_location()函數設置雷達圖的0度位置,可以傳入'N'、'NW'、'W'、'SW'、'S'、'SE'、'E'、'NE'八個方位縮寫。使用set_rlim()函數設置極坐標上的刻度范圍。使用set_rlabel_position()函數設置極坐標上的刻度標簽顯示位置,傳入一個相對于雷達圖0度的角度值。當然還可以根據需要設置其他屬性,如標題、圖例等。

在上面的例子中,將兩位同學的考試成績繪制成了雷達圖,通過雷達圖,可以看出兩個人的單科成績互有高低,而整體來看,兩位同學成績都很優秀。上面的雷達圖中,網格線都是圓形的,而用折線圖連接的雷達圖兩個維度之間是直接連接的,所以將網格線換成多邊形會更合理一點。

二、matplotlib繪制多邊形雷達圖

import numpy as npimport matplotlib.pyplot as plt results = [{'大學英語': 87, '高等數學': 79, '體育': 95, '計算機基礎': 92, '程序設計': 85}, {'大學英語': 80, '高等數學': 90, '體育': 91, '計算機基礎': 85, '程序設計': 88}]data_length = len(results[0])angles = np.linspace(0, 2*np.pi, data_length, endpoint=False)labels = [key for key in results[0].keys()]score = [[v for v in result.values()] for result in results]score_a = np.concatenate((score[0], [score[0][0]]))score_b = np.concatenate((score[1], [score[1][0]]))angles = np.concatenate((angles, [angles[0]]))labels = np.concatenate((labels, [labels[0]]))fig = plt.figure(figsize=(10, 6), dpi=100)fig.suptitle('計算機專業大一(上)')ax1 = plt.subplot(121, polar=True)ax2 = plt.subplot(122, polar=True)ax, data, name = [ax1, ax2], [score_a, score_b], ['弓長張', '口天吳']for i in range(2): for j in np.arange(0, 100+20, 20): ax[i].plot(angles, 6*[j], ’-.’, lw=0.5, color=’black’) for j in range(5): ax[i].plot([angles[j], angles[j]], [0, 100], ’-.’, lw=0.5, color=’black’) ax[i].plot(angles, data[i], color=’b’) # 隱藏最外圈的圓 ax[i].spines[’polar’].set_visible(False) # 隱藏圓形網格線 ax[i].grid(False) for a, b in zip(angles, data[i]): ax[i].text(a, b+5, ’%.00f’ % b, ha=’center’, va=’center’, fontsize=12, color=’b’) ax[i].set_thetagrids(angles*180/np.pi, labels) ax[i].set_theta_zero_location(’N’) ax[i].set_rlim(0, 100) ax[i].set_rlabel_position(0) ax[i].set_title(name[i])plt.show()

運行結果:

如何利用Python matplotlib繪制雷達圖

在極坐標系中,極徑值相等的點在一個圓上,所以繪制的雷達圖中,網格線默認都是圓形的。如果要繪制多邊形的雷達圖,則需要將圓形的網格線隱藏,然后根據刻度范圍繪制出多邊形的網格線。

首先使用plot()函數,根據刻度范圍,繪制出同心的多個多邊形和多個維度方向的極軸,作為雷達圖的網格線,形成一張“網”。

鏈式調用極坐標的spines[’polar’].set_visible()函數,傳入參數False,將極坐標系最外圈的圓形隱藏。調用grid()函數,傳入參數False,將極坐標系中的的圓形網格線隱藏。

修改完網格線后,即可達到多邊形的效果。在第二次繪制雷達圖時,將兩位同學的成績分到兩張不同的雷達圖中,并用text()設置了每個維度的數據標注,使用suptitle()函數來設置整張圖形的標題。

上面的兩次繪圖,將兩位同學的成績繪制在同一張雷達圖時,更方便對比兩位同學的成績,如比較誰更全面、更優秀。分開繪制時,更方便分析個人的成績情況,如是否偏科。而相對于圓形的雷達圖,在多邊形的雷達圖中,不會出現雷達圖與網格線的不合理交叉(雷達圖與網格線交叉兩次),使用多邊形網格線更合理。

到此這篇關于如何利用Python matplotlib繪制雷達圖的文章就介紹到這了,更多相關Python matplotlib繪制雷達圖內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
色婷婷av久久久久久久| 国产精品一级黄| 国产一区二区在线观看视频| 鲁鲁狠狠狠7777一区二区| 日韩一区在线播放| www..com久久爱| 欧美电视剧在线看免费| 成人免费高清视频| 日韩欧美一级在线播放| 国产精品996| 欧美一区二区三区视频在线观看 | 欧美成人vr18sexvr| 精品系列免费在线观看| 欧美日韩www| 国产精品一级在线| 欧美不卡123| 99国产精品一区| 国产视频一区在线播放| 94色蜜桃网一区二区三区| 久久天天做天天爱综合色| 不卡的看片网站| 久久精品一区四区| 国产精品jizz在线观看美国| 国产精品乱码一区二区三区软件| 欧美区日韩区| 国产精品成人免费精品自在线观看 | 大尺度一区二区| 91精品国产欧美一区二区| 国产一区二区三区日韩 | 国产伦精品一区二区三区高清版 | 国产精品分类| 最新国产精品久久精品| 精品99视频| 亚洲精品视频观看| 欧美一级网站| 六月丁香综合在线视频| 欧美一级高清大全免费观看| 高清av一区二区| 国产午夜精品久久久久久免费视 | 久久精品欧美日韩精品| 欧美日韩在线精品| 亚洲精品高清在线观看| 日本韩国一区二区三区| 国产精品影视网| 久久久99久久| 亚洲麻豆av| 日韩va欧美va亚洲va久久| 欧美日韩国产天堂| 成人avav影音| 国产精品亲子伦对白| 亚洲电影成人| 日本vs亚洲vs韩国一区三区二区 | 丝袜脚交一区二区| 欧美日韩免费一区二区三区视频| 成人一区二区三区在线观看 | 亚洲图片你懂的| 久久久久.com| 国产精品888| 国产精品萝li| 久久精品女人天堂| 国产最新精品精品你懂的| 精品国产1区2区3区| 亚洲黄色精品| 久久se精品一区精品二区| 久久久久久一级片| 亚洲一区二区三区午夜| 狠狠色丁香婷综合久久| 欧美激情一区二区三区在线| 久久激情一区| 国产盗摄视频一区二区三区| 国产精品污污网站在线观看| 久久男女视频| 成人激情综合网站| 一区二区三区四区亚洲| 欧美伦理影视网| 欧美日韩视频一区二区三区| 日韩有码一区二区三区| 欧美大胆人体bbbb| 亚洲精品乱码| 国内精品久久久久影院色 | 亚洲天堂a在线| 欧洲国内综合视频| 91浏览器在线视频| 三级不卡在线观看| 日韩精品专区在线影院重磅| 99热这里只有精品8| 国产在线不卡一卡二卡三卡四卡| 国产精品久久久久久久久动漫 | 秋霞午夜鲁丝一区二区老狼| 欧美成人乱码一区二区三区| 亚洲精品黄色| 国产精品一区二区久久不卡 | 亚洲第一主播视频| 精品久久久久久久久久久久久久久 | 国产欧美高清| 国产99久久久国产精品| 亚洲欧美欧美一区二区三区| 欧美欧美欧美欧美| 亚洲午夜精品久久久久久浪潮| 麻豆国产91在线播放| 国产精品三级av在线播放| 欧美网站大全在线观看| 亚洲私拍自拍| 国产成人免费9x9x人网站视频| 亚洲欧美日韩电影| 日韩欧美国产一区二区三区 | 精品国产成人在线影院| 国产伦精品一区二区三区| 丁香婷婷综合激情五月色| 一区二区三区丝袜| 精品剧情在线观看| 一本久久a久久精品亚洲| 欧美日韩一区在线视频| 国产在线麻豆精品观看| 亚洲一区在线观看免费 | 日韩一区精品视频| 国产精品视频你懂的| 91精品国产综合久久婷婷香蕉 | 91九色最新地址| 国内一区二区在线视频观看| 国产精品伊人色| 日日欢夜夜爽一区| 国产精品初高中害羞小美女文| 欧美一级片在线| 久久三级视频| 亚洲国产精品久久久久婷婷老年| 成人av中文字幕| 蜜桃视频在线观看一区| 亚洲精品成a人| 国产日本欧洲亚洲| 正在播放亚洲一区| 色哟哟一区二区| 日韩一级欧洲| 欧美日韩亚洲一区二区三区在线 | 欧美人动与zoxxxx乱| 一本色道婷婷久久欧美| 91蜜桃在线免费视频| 国产一区二区三区国产| 丝袜国产日韩另类美女| 亚洲欧美一区二区三区孕妇| 欧美国产日韩亚洲一区| 精品国产一区二区在线观看| 欧美日韩精品一区二区天天拍小说 | 久久综合色鬼综合色| 91精品在线观看入口| 欧美在线观看视频在线| 国产精品社区| 激情av一区| 国产精品豆花视频| 欧美成人蜜桃| 99久免费精品视频在线观看| 国产美女精品在线| 久久精品国产亚洲高清剧情介绍 | 91色|porny| av激情综合网| 国产99精品在线观看| 韩国中文字幕2020精品| 青青草国产成人99久久| 午夜精品久久一牛影视| 亚洲国产精品久久人人爱蜜臀| 亚洲乱码精品一二三四区日韩在线 | 色av成人天堂桃色av| 美女视频一区免费观看| 午夜在线精品偷拍| 国产精品一区二区在线观看 | 日韩欧美综合一区| 91精品国模一区二区三区| 91精品国产综合久久香蕉的特点 | 一区二区三区四区在线免费观看| 日韩伦理免费电影| 亚洲欧洲日产国码二区| 国产精品久久久久永久免费观看 | 成人动漫精品一区二区| 国产激情一区二区三区四区 | 中文字幕一区二区三区不卡在线| 中文字幕国产一区二区| 国产日韩三级在线| 国产色婷婷亚洲99精品小说| 久久精品欧美日韩精品| 国产三级久久久| 国产精品久久三区| 亚洲黄色小说网站| 天堂va蜜桃一区二区三区| 日本不卡在线视频| 国产一区二区主播在线| 国产精品一区二区三区四区 | 在线精品视频免费播放| 欧美日韩精品二区第二页| 欧美一区二区三区成人| 欧美mv日韩mv国产网站| 久久噜噜亚洲综合| 国产精品成人一区二区艾草| 一区二区三区欧美日| 日韩高清一级片| 国模一区二区三区白浆| 成人一区二区视频| 午夜久久黄色| 亚洲精品影院在线观看| 久久一日本道色综合久久| 欧美日韩精品久久久|