作者:铁匠他夫人_738 | 来源:互联网 | 2023-09-24 19:19
1.基本构造 之前在一些数据分析案例中看到用 Go 语言绘制的雷达图,非常的漂亮,就想着用matlibplot.pyplot也照着画一个,遗憾的是matlibplot.pyplot模块中没有直接绘制雷达图的函数,不过可以基于‘polar’图形特征来改进,下面就记录一下如何绘制雷达图。
import numpy as npimport matplotlib. pyplot as plt plt. rcParams[ 'font.sans-serif' ] = 'SimHei' plt. rcParams[ 'axes.unicode_minus' ] = False plt. style. use( 'ggplot' ) values = [ 2.6 , 2.1 , 3.4 , 3 , 4.1 ] feature = [ '个人能力' , 'QC知识' , '解决问题能力' , '服务质量意识' , '团队精神' ] angles= np. linspace( 0 , 2 * np. pi, len ( values) , endpoint= False ) values= np. concatenate( ( values, [ values[ 0 ] ] ) ) angles= np. concatenate( ( angles, [ angles[ 0 ] ] ) ) fig= plt. figure( ) ax = fig. add_subplot( 111 , polar= True ) ax. plot( angles, values, 'o-' , linewidth= 2 ) ax. fill( angles, values, alpha= 0.25 ) ax. set_thetagrids( angles * 180 / np. pi, feature) ax. set_ylim( 0 , 5 ) plt. title( '活动前后员工状态表现' ) ax. grid( True ) plt. show( )
2.比较功能 一般我们用雷达图时,是为了比较两组数据,因此看一下如何用雷达图比较两组数据
values_2= [ 1.7 , 4.1 , 3.3 , 2.6 , 3.8 ] values_2= np. concatenate( [ values_2, [ values_2[ 0 ] ] ] ) fig= plt. figure( ) ax = fig. add_subplot( 111 , polar= True ) ax. plot( angles, values, 'o-' , linewidth= 2 , label= '活动前' ) ax. fill( angles, values, alpha= 0.25 ) ax. plot( angles, values_2, 'o-' , linewidth= 2 , label= '活动后' ) ax. fill( angles, values_2, alpha= 0.25 ) ax. set_thetagrids( angles * 180 / np. pi, feature) ax. set_ylim( 0 , 5 ) plt. title( '活动前后员工状态表现' ) plt. legend( loc= 'best' ) ax. grid( True ) plt. show( )
不过说实话,这个图形并不怎么美观,个人感觉主要是背景颜色得换一下。之前还看到有人用pygal库(pygal库绘制世界地图信息挺不错)绘图库绘制雷达图
import pygal radar_chart = pygal. Radar( fill = True , range = ( 0 , 5 ) ) radar_chart. title = '活动前后员工状态表现' radar_chart. x_labels = [ '个人能力' , 'QC知识' , '解决问题能力' , '服务质量意识' , '团队精神' ] radar_chart. add( '活动前' , [ 3.2 , 2.1 , 3.5 , 2.8 , 3 ] ) radar_chart. add( '活动后' , [ 4 , 4.1 , 4.5 , 4 , 4.1 ] ) radar_chart. render_to_file( 'radar_chart.svg' )