使用Python創(chuàng)建Excel雷達圖的完整教學(xué)

雷達圖(Radar Chart)是一種多維數(shù)據(jù)可視化工具,特別適合比較多個變量在不同維度上的表現(xiàn)。它在性能評估、能力分析、產(chǎn)品對比等場景中非常實用。本文將介紹如何使用 Python 在 Excel 中創(chuàng)建雷達圖和填充雷達圖,并對圖表進行自定義設(shè)置。
為什么使用雷達圖
雷達圖具有以下優(yōu)勢:
- 多維度對比:可以在同一圖表中展示多個維度的數(shù)據(jù)
- 直觀的性能分析:清晰顯示各項指標(biāo)的強弱分布
- 模式識別:通過圖形形狀快速識別數(shù)據(jù)模式和異常
- 適用于評估場景:如員工績效評估、產(chǎn)品特性對比、技能矩陣分析等
典型應(yīng)用場景包括:
- 員工多維度績效評估(溝通能力、技術(shù)能力、領(lǐng)導(dǎo)力等)
- 產(chǎn)品功能對比(價格、性能、易用性、可靠性等)
- 市場分析(不同地區(qū)的銷售表現(xiàn))
- 能力模型可視化(技能掌握程度)
環(huán)境準(zhǔn)備
首先需要安裝 Spire.XLS for Python 庫:
pip install Spire.XLS
Spire.XLS 提供了完整的 Excel 文件操作 API,支持創(chuàng)建、讀取、修改和轉(zhuǎn)換 Excel 文檔,無需安裝 Microsoft Excel。
創(chuàng)建基礎(chǔ)雷達圖
下面我們將創(chuàng)建一個展示不同地區(qū)產(chǎn)品銷售情況的雷達圖。示例數(shù)據(jù)包含三種產(chǎn)品(自行車、汽車、卡車)在兩個城市(巴黎、紐約)的銷售數(shù)據(jù)。
步驟 1:準(zhǔn)備數(shù)據(jù)并創(chuàng)建工作表
首先創(chuàng)建 Excel 工作簿并添加示例數(shù)據(jù):
from spire.xls import *
from spire.xls.common import *
def CreateChartData(sheet):
# 設(shè)置產(chǎn)品標(biāo)題
sheet.Range["A1"].Value = "Product"
sheet.Range["A2"].Value = "Bikes"
sheet.Range["A3"].Value = "Cars"
sheet.Range["A4"].Value = "Trucks"
sheet.Range["A5"].Value = "Buses"
# 設(shè)置巴黎銷售數(shù)據(jù)
sheet.Range["B1"].Value = "Paris"
sheet.Range["B2"].NumberValue = 4000
sheet.Range["B3"].NumberValue = 23000
sheet.Range["B4"].NumberValue = 4000
sheet.Range["B5"].NumberValue = 30000
# 設(shè)置紐約銷售數(shù)據(jù)
sheet.Range["C1"].Value = "New York"
sheet.Range["C2"].NumberValue = 30000
sheet.Range["C3"].NumberValue = 7600
sheet.Range["C4"].NumberValue = 18000
sheet.Range["C5"].NumberValue = 8000
# 設(shè)置標(biāo)題行字體加粗
sheet.Range["A1:C1"].Style.Font.IsBold = True
# 為不同行設(shè)置背景色
sheet.Range["A2:C2"].Style.KnownColor = ExcelColors.LightYellow
sheet.Range["A3:C3"].Style.KnownColor = ExcelColors.LightGreen1
sheet.Range["A4:C4"].Style.KnownColor = ExcelColors.LightOrange
sheet.Range["A5:C5"].Style.KnownColor = ExcelColors.LightTurquoise
# 設(shè)置邊框樣式
style = sheet.Range["A1:C5"].Style
borders = style.Borders
# 設(shè)置上邊框
topborder = borders[BordersLineType.EdgeTop]
topborder.Color = Color.FromRgb(0, 0, 128)
borders[BordersLineType.EdgeTop].LineStyle = LineStyleType.Thin
# 設(shè)置下邊框
borders[BordersLineType.EdgeBottom].Color = Color.FromRgb(0, 0, 128)
sheet.Range["A1:C5"].Style.Borders[BordersLineType.EdgeBottom].LineStyle = LineStyleType.Thin
# 設(shè)置左邊框
sheet.Range["A1:C5"].Style.Borders[BordersLineType.EdgeLeft].Color = Color.FromRgb(0, 0, 128)
sheet.Range["A1:C5"].Style.Borders[BordersLineType.EdgeLeft].LineStyle = LineStyleType.Thin
# 設(shè)置右邊框
sheet.Range["A1:C5"].Style.Borders[BordersLineType.EdgeRight].Color = Color.FromRgb(0, 0, 128)
sheet.Range["A1:C5"].Style.Borders[BordersLineType.EdgeRight].LineStyle = LineStyleType.Thin
# 設(shè)置數(shù)字格式為貨幣格式
sheet.Range["B2:C5"].Style.NumberFormat = "\"$\"#,##0"
# 創(chuàng)建工作簿
workbook = Workbook()
workbook.CreateEmptySheets(1)
sheet = workbook.Worksheets[0]
sheet.Name = "Chart data"
sheet.GridLinesVisible = False
# 寫入圖表數(shù)據(jù)
CreateChartData(sheet)
這段代碼完成了以下任務(wù):
- 創(chuàng)建了包含產(chǎn)品和地區(qū)銷售數(shù)據(jù)的表格
- 設(shè)置了標(biāo)題行的粗體樣式
- 為不同數(shù)據(jù)行應(yīng)用了不同的背景色,提高可讀性
- 添加了深藍色邊框,使表格更加美觀
- 將數(shù)值格式化為美元貨幣格式
步驟 2:添加雷達圖并配置屬性
接下來在工作表中添加雷達圖并設(shè)置其屬性:
# 添加新圖表到工作表
chart = sheet.Charts.Add()
# 設(shè)置圖表位置
chart.LeftColumn = 1
chart.TopRow = 6
chart.RightColumn = 11
chart.BottomRow = 29
# 設(shè)置圖表數(shù)據(jù)范圍
chart.DataRange = sheet.Range["A1:C5"]
chart.SeriesDataFromRange = False
# 設(shè)置圖表類型為雷達圖
chart.ChartType = ExcelChartType.Radar
# 設(shè)置圖表標(biāo)題
chart.ChartTitle = "Sale market by region"
chart.ChartTitleArea.IsBold = True
chart.ChartTitleArea.Size = 12
# 隱藏繪圖區(qū)背景
chart.PlotArea.Fill.Visible = False
# 設(shè)置圖例位置
chart.Legend.Position = LegendPositionType.Corner
# 保存文檔
workbook.SaveToFile("CreateRadarChart.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
結(jié)果預(yù)覽:

關(guān)鍵 API 說明:
sheet.Charts.Add():向工作表添加新圖表對象chart.DataRange:指定圖表使用的數(shù)據(jù)范圍,這里使用 A1:C5 區(qū)域chart.SeriesDataFromRange = False:表示數(shù)據(jù)系列不按行組織,而是按列組織ExcelChartType.Radar:設(shè)置圖表類型為雷達圖(線條型)chart.ChartTitle:設(shè)置圖表標(biāo)題文本chart.PlotArea.Fill.Visible = False:隱藏繪圖區(qū)背景,使圖表更簡潔LegendPositionType.Corner:將圖例放置在角落位置
生成的雷達圖將以線條形式展示各產(chǎn)品在兩個地區(qū)的銷售數(shù)據(jù),便于對比分析。
創(chuàng)建填充雷達圖
除了標(biāo)準(zhǔn)雷達圖,還可以創(chuàng)建填充雷達圖(Radar Filled),這種類型會用顏色填充數(shù)據(jù)點之間的區(qū)域,視覺效果更加突出。
# 創(chuàng)建工作簿
workbook = Workbook()
workbook.CreateEmptySheets(1)
sheet = workbook.Worksheets[0]
sheet.Name = "Chart data"
sheet.GridLinesVisible = False
# 寫入圖表數(shù)據(jù)
CreateChartData(sheet)
# 添加新圖表到工作表
chart = sheet.Charts.Add()
# 設(shè)置圖表位置
chart.LeftColumn = 1
chart.TopRow = 6
chart.RightColumn = 11
chart.BottomRow = 29
# 設(shè)置圖表數(shù)據(jù)范圍
chart.DataRange = sheet.Range["A1:C5"]
chart.SeriesDataFromRange = False
# 設(shè)置圖表類型為填充雷達圖
chart.ChartType = ExcelChartType.RadarFilled
# 設(shè)置圖表標(biāo)題
chart.ChartTitle = "Sale market by region"
chart.ChartTitleArea.IsBold = True
chart.ChartTitleArea.Size = 12
# 隱藏繪圖區(qū)背景
chart.PlotArea.Fill.Visible = False
# 設(shè)置圖例位置
chart.Legend.Position = LegendPositionType.Corner
# 保存文檔
workbook.SaveToFile("CreateRadarChart_Fill.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
結(jié)果預(yù)覽:

填充雷達圖與普通雷達圖的主要區(qū)別在于:
- ExcelChartType.RadarFilled:使用填充類型,數(shù)據(jù)點之間的區(qū)域會被顏色填充
- 更適合強調(diào)數(shù)據(jù)范圍和面積對比
- 視覺上更加醒目,適合演示和報告場景
自定義雷達圖樣式
創(chuàng)建基本雷達圖后,可以進一步自定義圖表的各個元素,以滿足特定的展示需求。
調(diào)整數(shù)據(jù)系列顏色
可以為不同的數(shù)據(jù)系列設(shè)置不同的顏色,提高圖表的可區(qū)分度:
# 獲取第一個數(shù)據(jù)系列并設(shè)置顏色 series = chart.Series[0] series.Format.LineProperties.Color = Color.FromRgb(255, 0, 0) # 紅色 series.Format.LineProperties.Width = 2.5 # 獲取第二個數(shù)據(jù)系列并設(shè)置顏色 series2 = chart.Series[1] series2.Format.LineProperties.Color = Color.FromRgb(0, 0, 255) # 藍色 series2.Format.LineProperties.Width = 2.5
自定義坐標(biāo)軸
可以調(diào)整雷達圖的坐標(biāo)軸屬性,包括刻度、標(biāo)簽格式等:
# 獲取值軸 valueAxis = chart.PrimaryValueAxis # 設(shè)置坐標(biāo)軸標(biāo)題 valueAxis.Title = "Sales Amount" valueAxis.TitleArea.IsBold = True valueAxis.TitleArea.Size = 10 # 設(shè)置坐標(biāo)軸數(shù)字格式 valueAxis.NumberFormat = "$#,##0" # 設(shè)置主要網(wǎng)格線樣式 valueAxis.MajorGridLines.LineProperties.Color = Color.FromRgb(200, 200, 200) valueAxis.MajorGridLines.LineProperties.DashStyle = LineDashStyleType.Dash
添加數(shù)據(jù)標(biāo)簽
為數(shù)據(jù)點添加標(biāo)簽可以更清晰地顯示具體數(shù)值:
# 為每個系列添加數(shù)據(jù)標(biāo)簽
for series in chart.Series:
seriePoints = series.DataPoints
for point in seriePoints:
point.DataLabels.HasValue = True
point.DataLabels.Position = DataLabelPositionType.Above
調(diào)整圖表大小和位置
可以根據(jù)需要調(diào)整圖表在工作表中的位置和大小:
# 設(shè)置圖表占據(jù)的行列范圍 chart.LeftColumn = 1 # 起始列 chart.TopRow = 6 # 起始行 chart.RightColumn = 11 # 結(jié)束列 chart.BottomRow = 29 # 結(jié)束行 # 或者使用像素級精確控制 chart.Top = 100 # 頂部位置(像素) chart.Left = 50 # 左側(cè)位置(像素) chart.Width = 500 # 寬度(像素) chart.Height = 400 # 高度(像素)
實際應(yīng)用建議
在實際項目中使用雷達圖時,可以考慮以下最佳實踐:
數(shù)據(jù)準(zhǔn)備
- 確保所有維度使用相同的度量單位或已標(biāo)準(zhǔn)化
- 數(shù)據(jù)維度不宜過多,建議控制在 5-8 個維度以內(nèi)
- 為每個維度提供清晰的標(biāo)簽說明
視覺優(yōu)化
- 使用對比明顯的顏色區(qū)分不同數(shù)據(jù)系列
- 適當(dāng)調(diào)整線條寬度和透明度,避免重疊時難以辨認
- 添加數(shù)據(jù)標(biāo)簽時注意位置,避免遮擋
交互增強
- 在 Web 應(yīng)用中,可以結(jié)合 JavaScript 庫實現(xiàn)交互式雷達圖
- 添加懸停提示顯示詳細數(shù)值
- 支持動態(tài)切換顯示/隱藏特定數(shù)據(jù)系列
適用場景
- 績效評估系統(tǒng):展示員工在多維度考核中的表現(xiàn)
- 產(chǎn)品對比工具:比較不同產(chǎn)品的各項指標(biāo)
- 技能矩陣:可視化團隊成員的技能分布
- 競爭分析:對比企業(yè)與競爭對手的各項指標(biāo)
總結(jié)
本文介紹了如何使用 Python 在 Excel 中創(chuàng)建和自定義雷達圖。通過 Spire.XLS 庫,我們可以:
- 輕松創(chuàng)建標(biāo)準(zhǔn)雷達圖和填充雷達圖
- 自定義圖表的顏色、位置、標(biāo)題等屬性
- 調(diào)整坐標(biāo)軸、圖例和數(shù)據(jù)標(biāo)簽的樣式
- 將雷達圖應(yīng)用于各種數(shù)據(jù)分析和可視化場景
雷達圖是多維度數(shù)據(jù)分析的有力工具,特別適合需要同時比較多個變量的場景。結(jié)合 Python 的自動化能力,可以批量生成雷達圖報表,大大提高數(shù)據(jù)分析效率。
通過靈活運用這些 API,您可以根據(jù)具體需求創(chuàng)建出專業(yè)、美觀的雷達圖,為數(shù)據(jù)分析和決策提供有力支持。
以上就是使用Python創(chuàng)建Excel雷達圖的完整教學(xué)的詳細內(nèi)容,更多關(guān)于Python創(chuàng)建Excel雷達圖的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python+selenium實現(xiàn)登錄賬戶后自動點擊的示例
本篇文章主要介紹了python+selenium實現(xiàn)登錄賬戶后自動點擊的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-12-12
詳解Python是如何實現(xiàn)issubclass的
這篇文章主要介紹了詳解Python是如何實現(xiàn)issubclass的,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
基于Python輕松實現(xiàn)PDF轉(zhuǎn)圖片
PDF文件是我們在日常工作和學(xué)習(xí)中常用的文檔格式之一,但你知道嗎,你可以將PDF文件轉(zhuǎn)換為圖像,讓文檔變得更加生動有趣,下面我們就來看看具體的實現(xiàn)方法吧2023-08-08
python中windows鏈接linux執(zhí)行命令并獲取執(zhí)行狀態(tài)的問題小結(jié)
這篇文章主要介紹了python中windows鏈接linux執(zhí)行命令并獲取執(zhí)行狀態(tài),由于工具是pyqt寫的所以牽扯到用python鏈接linux的問題,這里記錄一下一些碰到的問題,需要的朋友可以參考下2022-11-11
Python 實現(xiàn)局域網(wǎng)遠程屏幕截圖案例
這篇文章主要介紹了Python 實現(xiàn)局域網(wǎng)遠程屏幕截圖案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03

