当前位置: 首页 > news >正文

matplotlib 雷达图2

说明

搞了一个最新版本的雷达图,比以前那个美观。

不多说,代码奉上:

完整代码

'''
matplotlib雷达图
'''
import numpy as np
import matplotlib.pyplot as plt


# 雷达图
def plot_radar(labels, data, score):
    '''
    用法:
    >>> labels = np.array(['艺术A','调研I','实际R','常规C','企业E','社会S']) #标签
    >>> data = np.array([1,4,3,6,4,8]) # 数据
    >>> score = 10 # 表明数据是“十分制”。其可选的选项有1分制、5分制、10分制、100分制
        
    >>> plot_radar(labels, data, score) # 画雷达图
    '''
    n = len(labels)
    
    # 转化为十分制!!!
    if score in [5, 10, 100]:
        data = data * 10/score
    elif score == 1:
        data = data * 10
    
    angles = np.linspace(0 + np.pi/2, 2*np.pi + np.pi/2, n, endpoint=False) # 旋转90度,从正上方开始!
    
    data = np.concatenate((data, [data[0]])) # 闭合
    angles = np.concatenate((angles, [angles[0]])) # 闭合
    
    
    fig = plt.figure()
    ax = fig.add_subplot(111, polar=True)# 参数polar,表示极坐标!!
    
    # 自己画grid线(5条环形线)
    for i in [2,4,6,8,10]:
        ax.plot(angles, [i]*(n+1), 'b-',lw=0.5) # 之所以 n +1,是因为要闭合!
    
     # 填充底色
    ax.fill(angles, [10]*(n+1), facecolor='g', alpha=0.5)

    # 自己画grid线(6条半径线)
    for i in range(n):
        ax.plot([angles[i], angles[i]], [0, 10], 'b-',lw=0.5)
        
    
    # 画线
    ax.plot(angles, data, 'bo-', linewidth=2)
    
    # 填充
    #ax.fill(angles, data, facecolor='r', alpha=0.25)
    ax.fill(angles, data, facecolor='r')
    
    
    ax.set_thetagrids(angles * 180/np.pi, labels, fontproperties="SimHei")
    ax.set_title("matplotlib雷达图", va='bottom', fontproperties="SimHei")
    ax.set_rlim(0,10)

    # 下两行去掉所有默认的grid线
    ax.spines['polar'].set_visible(False) # 去掉最外围的黑圈
    ax.grid(False)                        # 去掉中间的黑圈

    # 关闭数值刻度
    ax.set_yticks([])


    plt.show()



# 测试
if __name__ == '__main__':
    
    labels = np.array(['艺术A','调研I','实际R','常规C','企业E','社会S']) #标签
    
    data = np.array([1,4,3,6,4,8]) # 数据
    
    score = 10 # 表明数据是“十分制”。其可选的选项有1分制、5分制、10分制、100分制
    
    
    # 画雷达图
    plot_radar(labels, data, score)


效果图

709432-20170814184719709-331449375.png

相关文章:

  • 省赛选拔赛解题报告
  • ID、句柄、指针、对象互相转换
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • sql 查出一张表中重复的所有记录数据
  • Spinner使用二
  • 用jquery写循环播放div的相关笔记 珍贵的总结 -1
  • 【Python】raw转义字符
  • 【OpenStack】OpenStack系列4之Glance详解
  • 事件委托的小应用
  • WP_Query的使用方法
  • docker容器互联 分离部署PHP 和 nginx(端口映射方式)
  • mongoose post方法总结and疑点
  • 算法导论笔记——第十二~十四章 数据结构(二)树
  • 招Java工程师一名
  • React Native商城项目实战10 - 个人中心中间内容设置
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • classpath对获取配置文件的影响
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • ESLint简单操作
  • exports和module.exports
  • Flex布局到底解决了什么问题
  • java 多线程基础, 我觉得还是有必要看看的
  • Javascripit类型转换比较那点事儿,双等号(==)
  • Java小白进阶笔记(3)-初级面向对象
  • Js基础知识(四) - js运行原理与机制
  • Just for fun——迅速写完快速排序
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • react 代码优化(一) ——事件处理
  • supervisor 永不挂掉的进程 安装以及使用
  • VUE es6技巧写法(持续更新中~~~)
  • Yii源码解读-服务定位器(Service Locator)
  • 笨办法学C 练习34:动态数组
  • 回顾2016
  • 如何胜任知名企业的商业数据分析师?
  • 深度解析利用ES6进行Promise封装总结
  • 算法之不定期更新(一)(2018-04-12)
  • 新手搭建网站的主要流程
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ​queue --- 一个同步的队列类​
  • ​ubuntu下安装kvm虚拟机
  • #13 yum、编译安装与sed命令的使用
  • $.each()与$(selector).each()
  • (solr系列:一)使用tomcat部署solr服务
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • (转)用.Net的File控件上传文件的解决方案
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • /run/containerd/containerd.sock connect: connection refused
  • @angular/cli项目构建--Dynamic.Form
  • @SuppressWarnings注解