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

雷达图怎么绘制?!超简单,一次性告诉你Python和R绘制方法~~

今天给大家介绍的的图表为雷达图(Radar/Spider chart),这种类型图表在生活中较常使用,是一种以从同一点开始的轴上表示的三个或更多个定量变量的二维图表的形式显示多变量数据的图形方法。较常用的场景多为分析企业经营状况(收益性、生产性、流动性、安全性和成长性)。本期推文带你使R-Python绘制雷达图,主要内容如下:

  • R 绘制雷达图

  • Python 绘制雷达图

  • 更多详细的数据可视化教程,可订阅我们的店铺课程:

R 绘制雷达图

在R语言中,绘制雷达图的包主要为fmsb包和*ggradar包,这里我们首先介绍fmsb包:

fmsb包绘制雷达图

  1. 创建测试数据集,这里我们构建如下:

# 构建测试数据集
test_data <- data.frame(row.names = c('Name01','Name02','Name03'),Biology = c(7.9, 3.9, 9.4),Physics = c(10, 20, 0),Maths = c(3.7, 11.5, 2.5),Sport = c(8.7, 20, 4),English = c(7.9, 7.2, 12.4),Art = c(2.4, 0.2, 9.8),Music = c(20, 20, 20))
#定义每个变量的范围(只适用于fmsb包绘制)
max_min <- data.frame(row.names = c("Max", "Min"),Biology = c(20, 0), Physics = c(20, 0), Maths = c(20, 0),Sport = c(20, 0), English = c(20, 0), Art = c(20, 0),Music = c(20, 0))# 合并数据
test_data_pro <- rbind(max_min,test_data)           
  1. 单一变量绘制

我们首先绘制单一变量的雷达图,代码如下:

# 选取数据
name1_df <- test_data_pro[c("Max", "Min", "Name01"),]
plot01 <- fmsb::radarchart(name1_df)

Spider plot with single variable

Spider plot with single variable

这里我们对radarchart()部分重要参数进行解释:

  • 多边形特征(Polygon features):

    • pcol:线颜色

    • pfcol:填充颜色

    • plwd:线宽

  • 网格功能(Grid features):

    • cglcol:网的颜色

    • cglty:网格线类型

    • axislabcol:轴标签的颜色

    • caxislabels:要显示的轴标签向量

    • cglwd:网格线宽

  • 标签(Labels):

    • vlcex:组标签字体大小

    • vlabels: 变量名称 接下来我们就用到上面参数,使用多变量进行绘制:

color <- c("#00AFBB", "#E7B800", "#FC4E07")
plot02 <- radarchart(test_data_pro,title = c("Three Spider charts"),caxislabels = c(0, 5, 10, 15, 20),pcol = color,pfcol = scales::alpha(color, 0.5), plwd = 2, plty = 1,# Customize the gridcglcol = "grey", cglty = 1, cglwd = 0.8,# Customize the axisaxislabcol = "grey", # Variable labelsvlabels = colnames(test_data),vlcex = 1,
)
# 添加图例
legend(x = "bottom", legend = c('Name01','Name02','Name03'), horiz = TRUE,bty = "n", pch = 20 , col = color,text.col = "black", cex = 1, pt.cex = 1.
)

Multiple spider charts in one grid

Multiple spider charts in one grid

除此之外,我们还可以将每个变量进行单独绘制(循环绘制即可):

colors <- c("#ff7473", "#ffc952", "#47b8e0")
op <- par(mar = c(1, 1, 1, 1),bg = "#34314c")
#op <- par(bg = "#34314c")
par(mfrow = c(1,3))# Create the radar chart
for(i in 1:3){radarchart(test_data_pro[c(1, 2, i+2), ], caxislabels = c(0, 5, 10, 15, 20),#title = titles[i],pcol = colors[i],pfcol = scales::alpha(colors[i], 0.8), plwd = 2, plty = 1,# Customize the gridcglcol = "grey", cglty = 1, cglwd = 0.8,# Customize the axisaxislabcol = "grey", # Variable labelsvlabels = colnames(test_data),vlcex = 1)
}par(op)

结果如下:

Mult charts in one row

(这里我没找到设置刻度label颜色的属性哈)

介绍完fmsb包绘制雷达图,接下来我们介绍ggradar包绘制。

ggradar包绘制雷达图

由于是ggplot2的推展包,一些语法也就比较简单和熟悉,首先,我们需要对数据进行修改:

# 将行名称作为单独一列,为group列
data_pro <- test_data %>% tibble::rownames_to_column(var = "group")

我们绘制单一变量的雷达图:

plot_ggradar_single <- ggradar(data_pro[1,],values.radar = c("0", "10", "20"),grid.min = 0, grid.mid = 10, grid.max = 20)

single var

single var

当然,我们可以通过其自身的参数进行定制化操作,这里不一一列举,代码中有明确解释:

ggradar_single_set <- ggradar(data_pro[1,],#设置字体font.radar = "Roboto Condensed",values.radar = c("0", "10", "20"),grid.min = 0, grid.mid = 10, grid.max = 20,#设置grid.label字体大小和网格线颜色grid.label.size = 8,grid.line.width = 1,gridline.min.colour = "#A5DFF9",gridline.mid.colour = "#EF5285",gridline.max.colour = "#60C5BA",# 设置分组属性group.colours = "#30A9DE",group.line.width = 1.2,group.point.size = 4,# 设置背景background.circle.colour = "#FEEE7D",#设置刻度labelaxis.label.size = 8,#图例设置plot.legend = "TRUE",legend.position = "bottom",legend.title = "Single Group :",legend.text.size = 15) 

结果如下:

Single Var Cus

也可以绘制多变量雷达图:

ggradar_mult <-ggradar(data_pro,values.radar = c("0", "10", "20"),grid.min = 0, grid.mid = 10, grid.max = 20,group.line.width = 1, group.point.size = 3,group.colours = c("#00AFBB", "#E7B800", "#FC4E07"),background.circle.colour = "white",gridline.mid.colour = "grey",legend.position = "bottom")

Mult Var Charts

Mult Var Charts

当然,我们还可以使用 + 对其进行其他图层熟悉的添加(和ggplot2一样)

以上就是使用R进行雷达图的绘制,接下来,小编再简单介绍下,使用Python 进行绘制。

Python 绘制

这里我们先看下数据:

data for Python make

data for Python make

绘制代码如下(大家可直接记住即可)

  • 绘制网格(极坐标)

categories=list(data)[1:]
N = len(categories)
# 分配角度
angles = [n / float(N) * 2 * pi for n in range(N)]
angles += angles[:1]ax = plt.subplot(111, polar=True)ax.set_theta_offset(pi / 2)
ax.set_theta_direction(-1)
plt.xticks(angles[:-1], categories,size=12)# 绘制刻度label
ax.set_rlabel_position(0)
plt.yticks([10,20,30], ["10","20","30"], color="grey", size=10)
plt.ylim(0,25)
  • 添加数据

#变量01
values=data.loc[0].drop('group').values.flatten().tolist()
values += values[:1]
ax.plot(angles, values, linewidth=1, linestyle='solid', label="group A")
ax.fill(angles, values, 'b', alpha=0.1)
#变量01
values=data.loc[1].drop('group').values.flatten().tolist()
values += values[:1]
ax.plot(angles, values, linewidth=1, linestyle='solid', label="group B")
ax.fill(angles, values, 'r', alpha=0.1)# 图例
plt.legend(loc='lower center',frameon=False,ncol=2,bbox_to_anchor=(0.5, -0.2))

上述变量多的话,可以定义函数进行批量处理,这里只去了2个变量。可视化结果如下:

Radar chart Python make

Radar chart Python make

总结

以上就是关于雷达图(Radar chart)的R和Python绘图方法,大家可以结合自己喜好选择工具进行绘制哈(感觉还是R方便哈)~


http://www.mrgr.cn/news/47819.html

相关文章:

  • Android14上使用libgpiod[gpioinfo gpioget gpioset ...]
  • Android Studio 警告信息:Use start instead of left to ensure...
  • DVT:消除视觉变换器中的噪声伪影
  • HarmonyOS开发:ArkTS初识
  • ARM CCA机密计算安全模型之安全生命周期管理
  • C#标识符和关键字
  • 【Java】异常处理指南
  • C#语言集成外国人永久居留证查验接口的方法
  • centos celery 日志管理
  • linux系统,监控进程运行状态并自动重启崩溃后的进程的多种方法
  • prometheus client_java实现进程的CPU、内存、IO、流量的可观测
  • 从零开始了解云WAF,您的网站安全升级指南
  • 软件测试学习笔记丨质量门禁 - SonarQube
  • 大腾智能助力深圳储能企业实现数字化升级
  • 【北京迅为】《STM32MP157开发板嵌入式开发指南》- 第二十八章 借助U盘或TF卡拷贝程序到开发板上
  • MyBatis 用法详解
  • 如何评估SaaS商城系统的稳定性和安全性
  • 大数据-163 Apache Kylin 全量增量Cube的构建 手动触发合并 JDBC 操作 Scala
  • c++类与对象下速成
  • IterComp: 从模型图库中迭代合成感知反馈学习,用于文本到图像的生成
  • 【Vue3】 h()函数的用法
  • 9月CPI公布!美联储票委:对11月不降息保持开放态度
  • 富格林:揭穿黑幕细节顺利出金
  • 如何采集1688商品的多语言数据
  • el0_undef
  • Sql语句解析工具类