matplotlib绘制雷达图的基本配置(万能模板案例)

目录
  • 介绍
  • 应用场景
  • 案例一(成绩雷达图重叠)
  • 案例二(成绩雷达图左右图)
  • 极坐标

介绍

雷达图是以从同一点开始的轴上表示的三个或更多个定量变量的二维图表的形式显示多变量数据的图形方法。轴的相对位置和角度通常是无信息的。 雷达图也称为网络图,蜘蛛图,星图,蜘蛛网图,不规则多边形,极坐标图或Kiviat图。它相当于平行坐标图,轴径向排列。

应用场景

用于成绩的透视,比如查看你是否偏科,知晓你的兴趣偏向于哪一方面

案例一(成绩雷达图重叠)

# coding=utf-8
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']     #显示中文
plt.rcParams['axes.unicode_minus']=False       #正常显示负号

results = [
    {"大学英语": 87, "高等数学": 79, "体育": 95, "计算机基础": 92, "程序设计": 85},
    {"大学英语": 80, "高等数学": 90, "体育": 91, "计算机基础": 85, "程序设计": 88}
]
data_length = len(results[0])
# 将极坐标根据数据长度进行等分
angles = np.linspace(0, 2*np.pi, data_length, endpoint=False)
labels = [key for key in results[0].keys()]
score = [[v for v in result.values()] for result in results]
# 使雷达图数据封闭
score_a = np.concatenate((score[0], [score[0][0]]))
score_b = np.concatenate((score[1], [score[1][0]]))
angles = np.concatenate((angles, [angles[0]]))
labels = np.concatenate((labels, [labels[0]]))
# 设置图形的大小
fig = plt.figure(figsize=(8, 6), dpi=100)
# 新建一个子图
ax = plt.subplot(111, polar=True)
# 绘制雷达图
ax.plot(angles, score_a, color='g')
ax.plot(angles, score_b, color='b')
# 设置雷达图中每一项的标签显示
ax.set_thetagrids(angles*180/np.pi, labels)
# 设置雷达图的0度起始位置
ax.set_theta_zero_location('N')  # E W S N SW SE NW NE
# 设置雷达图的坐标刻度范围
ax.set_rlim(0, 100)
# 设置雷达图的坐标值显示角度,相对于                                                                                                                                                                                                                                                                                                                                                                                            y               起始角度的偏移量
ax.set_rlabel_position(270)
ax.set_title("成绩对比")
plt.legend(["张三", "李四"], loc='best')
plt.show()

案例二(成绩雷达图左右图)

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']     #显示中文
plt.rcParams['axes.unicode_minus']=False       #正常显示负号

results = [{"大学英语": 87, "高等数学": 79, "体育": 95, "计算机基础": 92, "程序设计": 85},
   {"大学英语": 80, "高等数学": 90, "体育": 91, "计算机基础": 85, "程序设计": 88}]
data_length = len(results[0])
angles = np.linspace(0, 2*np.pi, data_length, endpoint=False)
labels = [key for key in results[0].keys()]
score = [[v for v in result.values()] for result in results]
score_a = np.concatenate((score[0], [score[0][0]]))  # 将每个数组的第一个元素添加到末尾,首尾相连
score_b = np.concatenate((score[1], [score[1][0]]))  # 将每个数组的第一个元素添加到末尾,首尾相连
angles = np.concatenate((angles, [angles[0]]))
labels = np.concatenate((labels, [labels[0]]))
fig = plt.figure(figsize=(10, 6), dpi=100)
fig.suptitle("成绩对比")
ax1 = plt.subplot(121, polar=True)
ax2 = plt.subplot(122, polar=True)
ax, data, name = [ax1, ax2], [score_a, score_b], ["张三", "李四"]
for i in range(2):  # 0:左图 张三,1:右图 李四
    for j in np.arange(0, 100+20, 20):
        ax[i].plot(angles, 6*[j], '-.', lw=0.5, color='#123456')  # 画五边形框,lw=linewidth
    for j in range(5):
        ax[i].plot([angles[j], angles[j]], [0, 100], ':', lw=0.7, color='green')  # 画5条半径线,每个角度连接圆心0和顶点100
        ax[i].plot(angles, data[i], color='b')   # 在极坐标下画成绩折线图
        ax[i].fill(angles, data[i],color='#B34543',alpha=0.1)
        ax[i].spines['polar'].set_visible(False)  # 隐藏最外圈的圆
         # 隐藏圆形网格线
        ax[i].grid(False)
    for a, b in zip(angles, data[i]):
        ax[i].text(a, b+5, '%.00f' % b, ha='center', va='center', fontsize=12, color='b')
        ax[i].set_thetagrids(angles*180/np.pi, labels)
        ax[i].set_theta_zero_location('N')
        ax[i].set_rlim(0, 100)
        ax[i].set_rlabel_position(0)
        ax[i].set_title(name[i])
plt.show()

极坐标

import matplotlib.pyplot as plt
import numpy as np
plt.figure(figsize=(10,5))  # 设置画布

ax1 = plt.subplot(121, projection='polar')  # 左图: projection='polar' 表示极坐标系
ax2 = plt.subplot(122)                      # 右图: 默认是直角坐标系

x = np.linspace(0,2*np.pi,9)   # 0 - 2Π 平均划分成9个点 [0,1/4,1/2,3/4,1,5/4/,3/2,7/4,2]  0pi = 2pi
y = np.random.random(9)*10        # 随机9个值
y[-1] = y[0]                      # 首位相连

ax1.plot(x,y,marker='.')    # 画左图(ax1)  极坐标 (x表示角度,y表示半径)
ax2.plot(x,y,marker='.')    # 画右图(ax2)直角坐标 (x表示横轴,y表示纵轴)

ax1.fill(x,y,alpha=0.3)
ax2.fill(x,y,alpha=0.3)

plt.show()

到此这篇关于matplotlib绘制雷达图的基本配置(万能模板案例)的文章就介绍到这了,更多相关matplotlib 雷达图内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Matplotlib绘制雷达图和三维图的示例代码

    1.雷达图 程序示例 '''1.空白极坐标图''' import matplotlib.pyplot as plt plt.polar() plt.show() '''2.绘制一个极坐标点''' import numpy as np import matplotlib.pyplot as plt # 极坐标(0.25*pi,20) plt.polar(0.25*np.pi, 20, 'ro', lw=2) # 'ro'红色圆点 plt.ylim(0,50) plt.show() '''3.绘制多

  • 如何利用Python matplotlib绘制雷达图

    本篇文章介绍使用matplotlib绘制雷达图. 雷达图也被称为网络图,蜘蛛图,星图,蜘蛛网图,是一个不规则的多边形.雷达图可以形象地展示相同事物的多维指标,雷达图几乎随处可见,应用场景非常多. 一.matplotlib绘制圆形雷达图 # coding=utf-8 import numpy as np import matplotlib.pyplot as plt results = [{"大学英语": 87, "高等数学": 79, "体育":

  • python使用matplotlib绘制雷达图

    本文实例为大家分享了python使用matplotlib绘制雷达图的具体代码,供大家参考,具体内容如下 示例代码: # encoding: utf-8 import pandas as pd import numpy as np import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['KaiTi'] # 显示中文 labels = np.array([u'总场次', u'吃鸡数', u'前十数',u'总击杀']) #

  • matplotlib制作雷达图报错ValueError的实现

    在教材实例编写雷达图时出现ValueError,具体如下: ValueError: The number of FixedLocator locations (7), usually from a call to set_ticks, does not match the number of ticklabels (6). 而原代码如下: import numpy as np import matplotlib.pyplot as plt import matplotlib matplotlib

  • matplotlib绘制雷达图的基本配置(万能模板案例)

    目录 介绍 应用场景 案例一(成绩雷达图重叠) 案例二(成绩雷达图左右图) 极坐标 介绍 雷达图是以从同一点开始的轴上表示的三个或更多个定量变量的二维图表的形式显示多变量数据的图形方法.轴的相对位置和角度通常是无信息的. 雷达图也称为网络图,蜘蛛图,星图,蜘蛛网图,不规则多边形,极坐标图或Kiviat图.它相当于平行坐标图,轴径向排列. 应用场景 用于成绩的透视,比如查看你是否偏科,知晓你的兴趣偏向于哪一方面 案例一(成绩雷达图重叠) # coding=utf-8 import numpy as

  • matplotlib绘制折线图的基本配置(万能模板案例)

    前面我们已经构造了一种图形可视化的模板了,下面我们直接使用这个模板进行增添和修改,进一步的改善图形的外观. import matplotlib.pyplot as plt # 画布 plt.figure(figsize=(9,3), # (宽度 , 高度) 单位inch dpi=100, # 清晰度 dot-per-inch facecolor='#CCCCCC', # 画布底色 edgecolor='black',linewidth=0.2,frameon=True, # 画布边框 #fram

  • matplotlib绘制直方图的基本配置(万能模板案例)

    目录 直方图介绍 绘制直方图的参数(plt.hist()) 连接数据库进行直方图绘制案例 使用dataframe里面的plot函数进行绘制(万能模板) 绘制多个子图(多子图直方图案例模板) 概率分布直方图(统计图形) 直方图内显示折线图分布 堆叠面积直方图 在不同的子图中绘制各种类犯罪数据的数值分布 其他案例 乘客年龄分布频数直方图 男女乘客直方图(二维数据) 电影时长分布直方图 直方图介绍 直方图(Histogram),又称质量分布图,是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据

  • matplotlib绘制饼图的基本配置(万能模板案例)

    目录 饼图的概念 连接数据库绘制饼图案例(pandas画图) 显示百分比 饼图常见参数 扇区分离饼图 添加颜色 添加阴影 显示百分比 控制起始角度 将饼图放置在坐标轴 双饼图显示 饼图万能模板 饼图的概念 饼图英文学名为Sector Graph,又名Pie Graph.常用于统计学模块.2D饼图为圆形,手画时,常用圆规作图. 仅排列在工作表的一列或一行中的数据可以绘制到饼图中.饼图显示一个数据系列 (数据系列:在图表中绘制的相关数据点,这些数据源自数据表的行或列.图表中的每个数据系列具有唯一的颜

  • Python matplotlib绘制散点图配置(万能模板案例)

    目录 散点图 散点图一行代码显示 加颜色的散点图 颜色深浅表示数值大小 散点图显示颜色和大小 自定义图表散点图 散点图万能模板 其他模板 散点图 散点图是指在 回归分析中,数据点在直角坐标系平面上的 分布图,散点图表示因变量随 自变量而 变化的大致趋势,据此可以选择合适的函数 对数据点进行 拟合. 用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式.散点图将序列显示为一组点.值由点在 图表中的位置表示.类别由图表中的不同标记表示.散点图通常用于比较跨

  • matplotlib绘制甘特图的万能模板案例

    目录 定义一个绘制甘特图的类 调用及数据格式 类似于展示的图形 定义一个绘制甘特图的类 # -*- coding: utf-8 -*- from datetime import datetime import sys import numpy as np import matplotlib.pyplot as plt import matplotlib.font_manager as font_manager import matplotlib.dates as mdates import lo

  • PYTHON绘制雷达图代码实例

    这篇文章主要介绍了PYTHON绘制雷达图代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.雷达图 import matplotlib.pyplot as plt import numpy as np values = [0.09,-0.05,0.20,-0.02,0.08,0.09,0.03,0.027] x = np.linspace(0,2*np.pi,9)[:-1] c = np.random.random(size=(8,3)

随机推荐