美文网首页
Python—雷达图

Python—雷达图

作者: 灬鱼飞 | 来源:发表于2020-12-21 23:56 被阅读0次
import matplotlib.pyplot as plt
import numpy as np

import matplotlib.patches as mpathes


#构造数据
title = ""
values = [1,    1,  0.927358663,    0.787577119,    0.505513384,    0,  0,  0]
MaxVal = max(values)
feature = ["Tree species composition", "Age structure","Diameter","Height","Degree of slant","Preservation rate","Stem form","Stand density"]


#设置雷达图的角度,用于平分切开一个平面
N = len(values)
angles = np.linspace(0,2*np.pi,N,endpoint=False)
angle = 2*np.pi/N

#极坐标
ax= plt.subplot(111, projection='polar')

# 中文和负号的正常显示
plt.rcParams['font.sans-serif'] = 'Times New Roman'
plt.rcParams['axes.unicode_minus'] = False
#使用ggplot的风格绘图
plt.style.use('ggplot')
# plt.title("ω1",y=-0.13)
plt.grid(c='black')

#极坐标正方向
ax.set_theta_direction(-1)
#极坐标0°位置
ax.set_theta_zero_location('N')
#极坐标极径标签位置
ax.set_rlabel_position(0)
# 方法用于设置极坐标角度网格线显示
ax.set_thetagrids(angles=angles*180/np.pi,labels=[])
# ax.tick_params( 'x', pad = 20 )
#极坐标极径网格线显示
ax.set_rgrids(radii=[0.25,0.5,1],labels=[],angle=0, fmt='%.2f')


#画背景
plt.bar(x=[0,0,0],height=[1,0.5,0.25],width=10,color=['#CECCCC','#ffffff','#CECCCC'],alpha=1)

#画数据-符合最大值
for i in range(N):
    if (i == N-1):  
        break
    val = values[i]
    next_val = values[i+1]
    if(val==1 and next_val==1):
        plt.bar(x=angles[i],height=MaxVal,width=angle,color='#E17D7D',alpha=0.8,align="edge")
    else:
        break
#画数据-非最大值
values_new=values[i:]   
angles_new=angles[i:]    
ax.plot(angles_new, values_new, 'o-', linewidth=1, marker='',color='black')

values_new = np.concatenate((values_new,[0,values[0]]))
angles_new = np.concatenate((angles_new,[0,angles_new[0]]))
ax.fill(angles_new, values_new, facecolor='#E17D7D', alpha=0.8)


#标签
label_val = [1.12,1.05,1.05,1.07,1.12,1.45,1.35,1.36]
label_ang = angles.copy()
label_ang[0] = -angle*1/3-angle/10
label_ang[2] = angles[2]+angle/30
label_ang[4] = angles[4]+angle/4
label_ang[5] = angles[5]+angle/4
label_ang[6] = angles[6]-angle/30
label_ang[7] = angles[7]-angle/4
print(label_ang)
for i in range(N):
    plt.text(label_ang[i], label_val[i], feature[i], fontsize=10)

#极径label
plt.text(-angle*2/3, 0.3, "0.25", fontsize=10)
plt.text(-angle*1/3, 0.55, "0.50", fontsize=10)
plt.text(-angle*1/5, 0.92, "1.00", fontsize=10)

ax.set_ylim(0,1)
plt.savefig('./img/img1.jpg', dpi=600)
plt.show()
img1.jpg

相关文章

  • Python—雷达图

  • python绘制雷达图

    从excel中读取表格值,然后绘制雷达图 from time import clock import numpy ...

  • python画雷达图

    用雷达图做两个类别的特征对比,对比两个类别在各特征下的差异 类别资产负债率营业收入趋势销售毛利率现金比率资产减值损...

  • Python 详解雷达图/蛛网图

    蛛网图,最早知道是在玩FIFA游戏的时候,球员的能力用蛛网图来表示与比较,那时觉得非常新鲜。后来,在实际的工作中,...

  • Python笔记——绘制雷达图

    代码 # 雷达图 from pyechartsimport optionsas opts from pyechar...

  • Python matplotlib 画 雷达图

    有几组数据需要呈现,多维比较,适合雷达图 结果如下: 代码如下: 调整角度区间可以改变位置,如下:

  • R语言可视化(二十一):雷达图绘制

    21. 雷达图绘制 清除当前环境中的变量 设置工作目录 使用fmsb包绘制雷达图 使用ggradar包绘制雷达图

  • R实战| 雷达图(Radar Chart)

    R实战| 雷达图(Radar Chart) 雷达图(radar chart),又称蜘蛛网图(spider plot...

  • 数据雷达图

    最近公司项目,需要用到雷达图的效果,echarts的雷达图不太符合公司的需求,所以自己用canvas写了个雷达图的...

  • pyecharts--雷达图

    数据准备 普通雷达图 雷达图的基本框架出来以后,就需要精细的调整,包括颜色填充,线条调整,以及字体放大等等 雷达图...

网友评论

      本文标题:Python—雷达图

      本文链接:https://www.haomeiwen.com/subject/cnljnktx.html