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

泰勒雷达图2

matplotlib绘制泰勒雷达图

import matplotlib.pyplot as plt
import numpy as np
from numpy.core.fromnumeric import shape
import pandas as pd
import dask.dataframe as dd
from matplotlib.projections import PolarAxes
import mpl_toolkits.axisartist.floating_axes as FA
import mpl_toolkits.axisartist.grid_finder as GF
from matplotlib.transforms import Affine2Dclass TaylorDiagram:"""ref: pandas.DataFrame one columnsamples: pandas.DataFrame multiple columns"""def __init__(self, ax, ref, samples, Normalize=False, markers=[], colors=[], scale=1.2, ms=10, pkwargs={}):self.points = []self.Normalize = Normalizeself.pkwargs = pkwargsself.markers = markers if len(markers) else ['o', 'o', 's', 'v', 'o', 's', 'v'] * 100self.colors = colors if len(colors) else ['tab:blue', 'tab:red', 'tab:red', 'tab:red', 'tab:green', 'tab:green', 'tab:green', '#1abc9c', '#2ecc71', '#3498db', '#9b59b6', '#34495e']self.ms = msself.ref = refself.scale = scaleself.samples = samplesself.fig = plt.gcf()  # get current figureself.step_up(ax)  # set up a diagram axesself.plot_sample()  # draw sample points# self.add_legend()  # add legenddef calc_loc(self, x, y):# x为参考数据,y为评估数据# theta为弧度;r为半径R = x.corr(other=y, method='pearson')theta = np.arccos(R)r = y.std()return theta, r / self._refstd if self.Normalize else rdef step_up(self, ax):# close the original axisax.axis('off')ll, bb, ww, hh = ax.get_position().bounds# polar transformtr = PolarAxes.PolarTransform()# theta rangeRlocs = np.array([0, 0.2, 0.4, 0.6, 0.7, 0.8, 0.9, 0.95, 0.99, 1])Tlocs = np.arccos(Rlocs)  # convrt to theta locations# grid findergl1 = GF.FixedLocator(Tlocs)  # theta locatortf1 = GF.DictFormatter(dict(zip(Tlocs, map(str, Rlocs))))  # theta formatter# std rangeself._refstd = self.ref.std()self.stdmax = max([self.samples[col].std() for col in self.samples.columns] + [self._refstd])self.Smax = (1 if self.Normalize else self.stdmax)* self.scaleself.refstd = 1 if self.Normalize else self._refstdSlocs = np.linspace(0, self.Smax, 4)gl2 = GF.FixedLocator(Slocs)  # theta locatortf2 = GF.DictFormatter(dict(zip(Slocs, map(lambda i: '%.1f' % i, Slocs))))  # theta formatter# construct grid helpergrid_helper = FA.GridHelperCurveLinear(tr, extremes=(0, np.pi / 2, 0, self.Smax),grid_locator1=gl1, tick_formatter1=tf1,grid_locator2=gl2, tick_formatter2=tf2,)ax = self.fig.add_axes([ll, bb, ww, hh], facecolor='none', axes_class=FA.FloatingAxes, grid_helper=grid_helper)# thetaax.axis["top"].set_axis_direction("bottom")ax.axis["top"].toggle(ticklabels=True, label=True)ax.axis["top"].major_ticklabels.set_axis_direction("top")ax.axis["top"].label.set_axis_direction("top")ax.axis["top"].label.set_text("Correlation")ax.axis["top"].major_ticklabels.set_pad(8)# std leftax.axis["left"].set_axis_direction("bottom")ax.axis["left"].toggle(ticklabels=True)# std bottomax.axis["right"].set_axis_direction("top")ax.axis["right"].toggle(ticklabels=True, label=True)ax.axis["right"].label.set_text("Standard deviation")ax.axis["right"].major_ticklabels.set_axis_direction("left")ax.axis["right"].major_ticklabels.set_pad(8)# hideax.axis['bottom'].set_visible(False)# draw gridax.grid(linestyle='--', color='gray')self._ax = axself.ax = ax.get_aux_axes(tr)# STD线t = np.linspace(0, np.pi/2)r = np.zeros_like(t) + self.refstdself.ax.plot(t, r, 'k--')# RMS格网rs, ts = np.meshgrid(np.linspace(0, self.Smax, 100), np.linspace(0, np.pi/2, 100))rms = (self.refstd**2 + rs**2 - 2*self.refstd*rs*np.cos(ts))**0.5contours = self.ax.contour(ts, rs, rms, levels=np.linspace(0, self.scale, 4) if self.Normalize else 4,colors='gray', linestyles='--', alpha=.5)self.ax.clabel(contours, contours.levels, inline=True, fmt='%.1f', fontsize=10)# 绘制参考点p, = self.ax.plot(0, self.refstd, linestyle='', marker=self.markers[0], color=self.colors[0],markersize=self.ms, alpha=0.5, **self.pkwargs)p.set_label(self.ref.name)p.set_clip_on(True)  # reference点不被裁剪self.points.append(p)def plot_sample(self):stds = []for col, marker, color in zip(self.samples.columns, self.markers[1:], self.colors[1:]):t, s = self.calc_loc(self.ref, self.samples[col])p, = self.ax.plot(t, s, linestyle='', marker=marker, color=color, markersize=self.ms, alpha=.5, **self.pkwargs)p.set_label(col)self.points.append(p)stds.append(s)self.ax.set_xlim(xmax=max(stds))def add_legend(self):ll, bb, ww, hh = self.ax.get_position().boundsself.ax.legend(ncol=len(self.samples) + 1, loc='lower center', frameon=False, bbox_to_anchor=(ll, bb - hh*0.3, ww, hh*0.1))
if __name__ == "__main__":print('read data')df =pd.read_csv(r'C:\Users\Administrator\Desktop\123.csv')
#     df=pd.DataFrame(df)
#     print(df)fig, axes = plt.subplots(1, 1, figsize=(5, 5))td = TaylorDiagram(axes,df.iloc[:, 0], df.iloc[:,1:], ms=20, Normalize=True, scale=1.5)plt.show()

在这里插入图片描述

相关文章:

泰勒雷达图2

matplotlib绘制泰勒雷达图 import matplotlib.pyplot as plt import numpy as np from numpy.core.fromnumeric import shape import pandas as pd import dask.dataframe as dd from matplotlib.projections import PolarAxes import mpl_toolkits.axisartist.floating_axes a…...

数据库容灾 | MySQL MGR与阿里云PolarDB-X Paxos的深度对比

开源生态 众所周知,MySQL主备库(两节点)一般通过异步复制、半同步复制(Semi-Sync)来实现数据高可用,但主备架构在机房网络故障、主机hang住等异常场景下,HA切换后大概率就会出现数据不一致的问…...

react根据后端返回数据动态添加路由

以下代码都为部分核心代码 一.根据不同的登录用户,返回不同的权限列表 ,以下是三种不同用户限权列表 const pression { //超级管理员BigAdmin: [{key: "screen",icon: "FileOutlined",label: "数据图表",},{key: "…...

机器学习中的可解释性

「AI秘籍」系列课程: 人工智能应用数学基础 人工智能Python基础 人工智能基础核心知识 人工智能BI核心知识 人工智能CV核心知识 为什么我们需要了解模型如何进行预测 我们是否应该始终信任表现良好的模型?模型可能会拒绝你的抵押贷款申请或诊断你患…...

上海慕尼黑电子展开展,启明智显携物联网前沿方案亮相

随着科技创新的浪潮不断涌来,上海慕尼黑电子展在万众瞩目中盛大开幕。本次展会汇聚了全球顶尖的电子产品与技术解决方案,成为业界瞩目的焦点。启明智显作为物联网彩屏显示领域的佼佼者携产品亮相展会,为参展者带来了RTOS、LINUX全系列方案及A…...

Centos7离线安装ElasticSearch7.4.2

一、官网下载相关的安装包 ElasticSearch7.4.2: elasticsearch-7.4.2-linux-x86_64.tar.gz 下载中文分词器: elasticsearch-analysis-ik-7.4.2.zip 二、上传解压文件到服务器 上传到目录:/home/data/elasticsearch 解压文件&#xff1…...

深入理解sklearn中的模型参数优化技术

参数优化是机器学习中的关键步骤,它直接影响模型的性能和泛化能力。在sklearn中,参数优化可以通过多种方式实现,包括网格搜索(GridSearchCV)、随机搜索(RandomizedSearchCV)和贝叶斯优化等。本文…...

【Elasticsearch】开源搜索技术的演进与选择:Elasticsearch 与 OpenSearch

开源搜索技术的演进与选择:Elasticsearch 与 OpenSearch 1.历史发展2.OpenSearch 与 Elasticsearch 相同点3.OpenSearch 与 Elasticsearch 不同点3.1 版本大不同3.2 许可证不同3.3 社区不同3.4 功能不同3.5 安全性不同3.6 性能不同3.7 价格不同3.8 两者可相互导入 4…...

欧拉openEuler 22.03 LTS-部署k8sv1.03.1

1.设置ip # vi /etc/sysconfig/network-scripts/ifcfg-ens32 TYPEEthernet PROXY_METHODnone BROWSER_ONLYno BOOTPROTOstatic DEFROUTEyes IPV4_FAILURE_FATALno #IPV6INITyes #IPV6_AUTOCONFyes #IPV6_DEFROUTEyes #IPV6_FAILURE_FATALno #IPV6_ADDR_GEN_MODEeui64 NAMEens1…...

老年生活照护实训室:为养老服务业输送专业人才

本文探讨了老年生活照护实训室在养老服务业专业人才培养中的关键作用。通过详细阐述实训室的功能、教学实践、对学生能力的培养以及面临的挑战和解决方案,强调了其在提升人才素质、满足行业需求方面的重要性,旨在为养老服务业的可持续发展提供有力的人才…...

go语言中使用WaitGroup和channel实现处理多线程问题

WaitGroup 背景 如果将一个任务分为任意个小任务,并且不关心小任务的执行顺序,并且希望等待全部的小任务执行完成后再去操作后面的逻辑,那我推荐你用sync.WaitGRoup 使用方法 比如,有一个任务需要执行 3 个子任务,…...

Open3D 计算点云的平均密度

目录 一、概述 1.1基于领域密度计算原理 1.2应用 二、代码实现 三、实现效果 2.1点云显示 2.2密度计算结果 一、概述 在点云处理中,点的密度通常表示为某个点周围一定区域内的点的数量。高密度区域表示点云较密集,低密度区域表示点云较稀疏。计算…...

C语言之数据在内存中的存储(1),整形与大小端字节序

目录 前言 一、整形数据在内存中的存储 二、大小端字节序 三、大小端字节序的判断 四、字符型数据在内存中的存储 总结 前言 本文主要讲述整型包括字符型是如何在内存中存储的,涉及到大小端字节序这一概念,还有如何判断大小端,希望对大…...

B端全局导航:左侧还是顶部?不是随随便便,有依据在。

一、什么是全局导航 B端系统的全局导航是指在B端系统中的主要导航菜单,它通常位于系统的顶部或左侧,提供了系统中各个模块和功能的入口。全局导航菜单可以帮助用户快速找到和访问系统中的各个功能模块,提高系统的可用性和用户体验。 全局导航…...

什么是海外仓管理自动化?策略及落地实施步骤指南

作为海外仓的管理者,你每天都面临提高海外仓运营效率、降低成本和满足客户需求的问题。海外仓自动化管理技术为这些问题提供了不错的解决思路,不过和任何新技术一样,从策略到落地实施,都有一个对基础逻辑的认识过程。 今天我们整…...

自定义控件三部曲之绘图篇(六)Paint之函数大汇总、ColorMatrix与滤镜效果、setColorFilter

在自定义控件的绘图篇中,Paint 类是核心的组成部分之一,它控制了在 Canvas 上绘制的内容的各种属性,包括颜色、风格、抗锯齿、透明度等等。下面将详细介绍 Paint 的主要功能以及如何使用 ColorMatrix 和 setColorFilter 来实现滤镜效果。 Pa…...

请写sql满足业务:找到连续登录3天以上的用户

为了找到连续登录超过 3 天的用户,我们可以使用 SQL 窗口函数和递归查询来实现。假设有一个 user_logins 表,包含以下字段: user_id(用户ID)login_date(登录日期) 假设 login_date 是 DATE 类…...

fatal error: apriltag/apriltag.h: No such file or directory 的 参考解决方法

文章目录 写在前面一、问题描述二、解决方法参考链接 写在前面 自己的测试环境: Ubuntu20.04,ROS-Noteic 一、问题描述 自己编译ROS程序的时候遇到如下问题: fatal error: apriltag/apriltag.h: No such file or directory9 | #include &…...

C++继承(一文说懂)

目录 一: 🔥继承的概念及定义1.1 继承的概念1.2 继承定义1.2.1 定义格式1.2.2 继承关系和访问限定符1.2.3 继承基类成员访问方式的变化 二:🔥基类和派生类对象赋值转换三:🔥继承中的作用域四:&a…...

卷积神经网络可视化的探索

文章目录 训练LeNet模型下载FashionMNIST数据训练保存模型 卷积神经网络可视化加载模型一个测试图像不同层对图像处理的可视化第一个卷积层的处理第二个卷积层的处理 卷积神经网络是利用图像空间结构的一种深度学习网络架构,图像在经过卷积层、激活层、池化层、全连…...

RxJava学习记录

文章目录 1. 总览1.1 基本原理1.2 导入包和依赖 2. 操作符2.1 创建操作符2.2 转换操作符2.3 组合操作符2.4 功能操作符 1. 总览 1.1 基本原理 参考文献 构建流:每一步操作都会生成一个新的Observable节点(没错,包括ObserveOn和SubscribeOn线程变换操作…...

Spring Boot Vue 毕设系统讲解 3

目录 项目配置类 项目中配置的相关代码 spring Boot 拦截器相关知识 一、基于URL实现的拦截器: 二、基于注解的拦截器 三、把拦截器添加到配置中,相当于SpringMVC时的配置文件干的事儿: 项目配置类 项目中配置的相关代码 首先定义项目认…...

Spring Boot对接大模型:实战价值与技巧

Spring Boot对接大模型:实战价值与技巧 随着大数据和人工智能技术的飞速发展,大模型(Large-scale Models)在各个行业中的应用越来越广泛。为了充分利用这些大模型的能力,我们需要将其与现有的应用框架进行对接。Sprin…...

完美解决NameError: name ‘file‘ is not defined的正确解决方法,亲测有效!!!

完美解决NameError: name ‘file’ is not defined的正确解决方法,亲测有效!!! 亲测有效 完美解决NameError: name file is not defined的正确解决方法,亲测有效!!!报错问题解决思路…...

Witness Table 的由来

“Witness Table” 是 Swift 中的一个术语,源于编译原理和类型系统的概念。它被用来表示一种机制,通过这个机制,编译器可以确保某个类型确实实现了它声明遵循的协议中的所有方法和属性。下面是对这个术语的详细解释: 1. 术语来源…...

Python 3 AI 编程助手

Python 3 AI 编程助手 Python 3 是当前最流行的编程语言之一,特别是在人工智能(AI)领域。Python 3 的语法简洁明了,拥有丰富的库和框架,使其成为开发 AI 应用程序的首选语言。本文将介绍 Python 3 在 AI 编程中的关键特性、常用库以及如何使用 Python 3 构建 AI 应用程序…...

【nginx】nginx的配置文件到底是什么结构,到底怎么写?

背景:我window中下载了一个nginx,想要通过nginx来对本地的两个项目做动态代理,但是没想到下载启动都没遇见什么问题,但是在配置nginx.conf配置文件时,遇见了很多问题,查了好久没查到什么特别有用的内容&…...

基于React 实现井字棋

一、简介 这篇文章会基于React 实现井字棋小游戏功能。 二、效果演示 三、技术实现 import {useEffect, useState} from "react";export default (props) > {return <Board/> }const Board () > {let initialState [[, , ], [, , ], [, , ]];const [s…...

文件的换行符,Windows 的 CRLF 和 Linux 的 LF

文件的换行符&#xff0c;Windows 的 CRLF 和 Linux 的 LF&#xff0c;在开发项目时用哪种比较合适&#xff1f; 在开发项目时选择文件的换行符&#xff08;Windows 的 CRLF 或 Linux 的 LF&#xff09;&#xff0c;通常取决于几个因素&#xff0c;包括项目的运行环境、项目的…...

怎样优化 PostgreSQL 中对日期时间范围的模糊查询?

文章目录 一、问题分析&#xff08;一&#xff09;索引未有效利用&#xff08;二&#xff09;日期时间格式不统一&#xff08;三&#xff09;复杂的查询条件 二、优化策略&#xff08;一&#xff09;使用合适的索引&#xff08;二&#xff09;规范日期时间格式&#xff08;三&a…...

郭仓镇做网站/营销网页

1.激光炸弹 题目链接 题解:这题的解法有点类似前缀和,如果这题是给你一个线段,线段上每个点都有其对应的价值,有一个炸弹能摧毁长度为n的线段,求能摧毁的最大总价值,那么通过前缀和来做很容易解决,而这题就是把一维的前缀和变成了二维的前缀和,炸弹的爆炸范围是一个正方形,我们…...

深圳网站制作搜行者seo/seo技术顾问

mysql订单表设计&#xff1a; 一些基础说法&#xff1a; 1、 订单表&#xff1a;订单编号、下单时间、提交人、订单类型、收货人信息、订单状态[待发货-已发货等]、订单审核人、订单金额、收货人ID[来至客户信息表]、 订单商品信息记录表&#xff1a;订单编号、商品ID、 其实…...

中国突然解封真相/五种关键词优化工具

一、什么是cheat&#xff1f;cheat是在GNU通用公共许可证下&#xff0c;为Linux命令行用户发行的交互式备忘单应用程序。简单来说&#xff0c;它没有提供其他额外多余的信息&#xff0c;只通过使用实例告诉你一个命令参数如何使用。二、在Redhat、CentOS系统中安装Cheat&#x…...

国内最新疫情/seo策略

MySQL - 语句执行顺序 1.顺序 FROMONJOINWHEREGROUP BY (开始使用SELECT中的别名&#xff0c;后面的语句中都可以使用)ROLLUP, CUBE, AVG, SUM ...HAVINGSELECTDISTINCTORDER BYTOP, LIMIT2.解析 FORM&#xff1a;对FROM的左边的表和右边的表计算笛卡尔积。产生虚表VT1ON&#…...

大理州建设局网站门户网/东莞网络营销推广专业

0 前言1 动态代理 1.1 JDK动态代理1.2 CGLIB动态代理 1.2.1 CGLIB的代理用法1.2.2 CGLIB的过滤功能2 Spring AOP中的动态代理机制 2.1 JdkDynamicAopProxy2.2 CglibAopProxy3 总结0 前言 前一个季度旅游TDC的Thames服务有几次宕机&#xff0c;根据组内原因认真查找发现是数…...

腾讯有服务器如何做网站/江苏搜索引擎优化公司

2019独角兽企业重金招聘Python工程师标准>>> 1.用composer安装toplan/laravel-sms composer require toplan/laravel 2.在config/app.php文件中修改别名 3.生成两个文件或者从其他项目拿过来 拿过来也行&#xff1a; 4.控制器引入 use PHPMailer\PHPMailer\PHPMaile…...