首页 > 其他分享 >绘制雷达图

绘制雷达图

时间:2024-07-17 10:19:23浏览次数:11  
标签:set data new ax plt theta 雷达 绘制

1.导入数据库

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from scipy import interpolate

2.导入数据

path=r'path'
data=pd.read_excel(path,sheet_name='雷达图',index_col=0)
data

展示数据:

290m 312m
62.6 54.5
45° 61.6 54.6
90° 63.0 54.5
135° 60.6 53.9
180° 63.2 54.8
225° 60.6 53.9
270° 63.4 54.5
315° 61.6 54.6
360° 62.6 54.5

3.图纸设置

plt.rcParams['savefig.dpi'] = 300 # 图片像素
plt.rcParams['figure.dpi'] = 120 # 分辨率
plt.rcParams['font.sans-serif']=['SimHei']   #显示中文
plt.rcParams['axes.unicode_minus']=False      #显示负号

4.划分角度

n=len(data.index)
theta=np.linspace(0,2*np.pi,n,endpoint=True) #获取8个方向的角度值

R1=data['290m']/data['290m'].min()
R2=data['312m']/data['312m'].min()

5.构造平滑曲线函数

x_new=np.linspace(theta[0],theta[8],100)

f=interpolate.interp1d(theta,R1,kind='slinear')
y_smooth=f(x_new)

f1=interpolate.interp1d(theta,R2,kind='slinear')
y_smooth1=f1(x_new)

6.设置不同方向

labels=list(['0','45°','90°','135°','180°','225°','270°','315°'])

7.绘图

fig,ax=plt.subplots(subplot_kw={'projection': 'polar'})
ax.plot(theta,R1,'o',color='blue',markersize=8,fillstyle='none',label='290m')
ax.plot(theta,R2,'D',color='orange',markersize=6,fillstyle='none',label='312m') 
ax.plot(x_new,y_smooth,color='blue')
ax.plot(x_new,y_smooth1,color='orange')

ax.set_rmin(0.95) #设置刻度范围最小值
ax.set_rmax(1.08) #设置刻度范围最大值
ax.set_rticks([]) #隐藏刻度标签
ax.set_xticklabels(labels,fontsize=8)
ax.set_theta_zero_location('N')  #设置0度正北方向
ax.set_theta_direction(-1) #设置逆时针方向绘图
ax.legend(loc=(0.82,0.92),ncol=1,fontsize=8) # 添加图例

输出结果:
image

完整代码
#(1)导入库
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from scipy import interpolate

#(2)导入数据
path=r'path'
data=pd.read_excel(path,sheet_name='雷达图',index_col=0)

#(3)图纸设置
plt.rcParams['savefig.dpi'] = 300 # 图片像素
plt.rcParams['figure.dpi'] = 120 # 分辨率
plt.rcParams['font.sans-serif']=['SimHei']   #显示中文
plt.rcParams['axes.unicode_minus']=False      #显示负号

#(4)划分角度
n=len(data.index)
theta=np.linspace(0,2*np.pi,n,endpoint=True) #获取8个方向的角度值

R1=data['290m']/data['290m'].min()
R2=data['312m']/data['312m'].min()

#(5)构造平滑曲线函数
x_new=np.linspace(theta[0],theta[8],100)

f=interpolate.interp1d(theta,R1,kind='slinear')
y_smooth=f(x_new)

f1=interpolate.interp1d(theta,R2,kind='slinear')
y_smooth1=f1(x_new)

#(6)设置不同方向
labels=list(['0','45°','90°','135°','180°','225°','270°','315°'])

#(7)绘图
fig,ax=plt.subplots(subplot_kw={'projection': 'polar'})
ax.plot(theta,R1,'o',color='blue',markersize=8,fillstyle='none',label='290m')
ax.plot(theta,R2,'D',color='orange',markersize=6,fillstyle='none',label='312m') 
ax.plot(x_new,y_smooth,color='blue')
ax.plot(x_new,y_smooth1,color='orange')

ax.set_rmin(0.95) #设置刻度范围最小值
ax.set_rmax(1.08) #设置刻度范围最大值
ax.set_rticks([]) #隐藏刻度标签
ax.set_xticklabels(labels,fontsize=8)
ax.set_theta_zero_location('N')  #设置0度正北方向
ax.set_theta_direction(-1) #设置逆时针方向绘图
ax.legend(loc=(0.82,0.92),ncol=1,fontsize=8) # 添加图例

标签:set,data,new,ax,plt,theta,雷达,绘制
From: https://www.cnblogs.com/DavidShang/p/18306746

相关文章

  • python:绘制对数函数的曲线
    《高等数学》同济大学出版:对数函数,e=2.718281828459...为自然常数编写 test_log_x.py 如下#-*-coding:utf-8-*-"""绘制对数函数y=log(x)和y=log2(x)的曲线"""importnumpyasnpfrommatplotlibimportpyplotasplt#用于正常显示中文标题,负号plt.......
  • C++ OPENGL 贝塞尔曲线绘制
    代码 #include<glad/glad.h>#include<GLFW/glfw3.h>#include<iostream>#include<vector>structPoint{floatx;floaty;};//二次贝塞尔Pointbezier(floatt,Pointa,Pointc,Pointz){return{(1-t)*(1......
  • 通过MATLAB控制TI毫米波雷达的工作状态之TLV数据解析及绘制
    前言前一章博主介绍了如何基于设计视图中的这些组件结合MATLAB代码来实现TI毫米波雷达数据的实时采集。这一章将在此基础上实现TI毫米波雷达的TLV数据解析。过程中部分算法会涉及到一些简单的毫米波雷达相关算法,需要各位有一定的毫米波雷达基础。TLV数据之协议解析紧着上......
  • Qt-绘制运动方向控制按钮
    源代码:qianqiu10000/myDirectionButton效果图:↓1.在AutoCAD中绘制自己想要的按钮轮廓2.调整CAD中的坐标系,与Qt窗口坐标系一致,如图所示Y方向朝下3.继承QWidget,按照CAD中的坐标点绘制,并添加一些颜色变化#ifndefMYDIRECTIONBUTTON_H#defineMYDIRECTIONBUTTON_H#inclu......
  • 雷达1——基本原理
    雷达1——基本原理1雷达的原理以及基本组成1.1雷达工作原理简介雷达是利用目标对电磁波的反射(或称为二次散射)现象来发现目标标并测定其位置的。当雷达探测到目标后,就要从目标标回波中提取有关信息:可对目标的距离和空间角度定位,目标位置的变化率可由其距离和角度随时......
  • 【可视化大屏系列】Echarts之饼图绘制
    本文为个人近期学习总结,若有错误之处,欢迎指出!Echarts之饼图绘制前言1.需求2.实现效果3.大概思路4.代码实现子组件写法父组件写法5.附加(1)圆环饼图的绘制(2)南丁格尔玫瑰饼图A.半径展示数据的大小B.面积展示数据的大小前言在前文页面布局、DataV的使用、Echarts......
  • C++使用gnuplot-cpp库绘制图像
    最近想要对一些时变的变量进行可视化,搜索来搜索去选择了使用gnuplot这个工具。sudoapt-getinstallgnuplotsudoapt-getinstallgnuplot-x11#使其支持linux终端这样就安装完gnuplot了。接着可以在命令行中键入gnuplot命令打开gnuplot的交互式环境。由于这里着目于使用c++......
  • 13 - matlab m_map地学绘图工具基础函数 - 介绍创建管理颜色映射的函数m_colmap和轮廓
    13-matlabm_map地学绘图工具基础函数-介绍创建管理颜色映射的函数m_colmap和轮廓图绘制颜色条的函数m_contfbar0.引言1.关于m_colmap2.关于m_contfbar3.结语0.引言  本篇介绍下m_map中用于创建和管理颜色映射函数(m_colmap)和为轮廓图绘制颜色条的函......
  • YOLOv8中根据标签绘制真实框
    这个在写论文的过程中获取展示图片的时侯可能会需要用的。最近也是自己在弄目标检测方面的东西,然后这也是自己碰到的问题,想着能分享一下,希望对有需要的人有所帮助。也欢迎大家来讨论问题、交流心得。importcv2importos#定义输入文件夹和输出文件夹路径input_img_folder......
  • R语言中交互式图表绘制
    revenue<-read.csv("data/revenue.csv")数据集放在了文章末尾,需要自取。if(!require(plotly))install.packages("plotly")#绘制柱状图p<-plot_ly(revenue,y=~本周,x=~游戏名称,type="bar",name="本周")pp%>%add_trace(y=~上周,na......