use*_*063 3 plot r radar-chart
我想为10行16列的数据帧绘制多个雷达图.特别是我想为数据帧的每一行绘制雷达图,其中列对应于变量.我使用的函数radarchart从fmsb包,但我可以绘制完整行中的图形,我不能在不同的图表它分割.
有没有选择呢?
调用数据框normed,它看起来像以下(值被规范化):
(clust) (v1) (v2) (v3) (v4) (v5) (v6) ...
1 0.00 0.10 0.12 0.23 0.33 1.00
2 0.13 0.80 0.84 0.70 0.60 0.77
3 0.25 0.63 1.00 1.00 0.10 1.00
4 0.38 1.00 0.54 0.67 0.90 0.59
Run Code Online (Sandbox Code Playgroud)
如果我只是编码:
radarchart(normed)
我获得一个图表,每行有一行.
基本上你想为每一行调用一次函数.使用类似的layout()设备绘制每个设备的多个绘图.还要注意,radarchart需要一种方法来了解每个轴的范围.默认情况下,它通过查看每个变量的前两行来查找最大值和最小值.这是一个完整的例子
#test data
dd<-data.frame(
clust = 1:4,
v1 = c(0, 0.13, 0.25, 0.38),
v2 = c(0.1, 0.8, 0.63, 1),
v3 = c(0.12, 0.84, 1, 0.54),
v4 = c(0.23, 0.7, 1, 0.67),
v5 = c(0.33, 0.6, 0.1, 0.9),
v6 = c(1, 0.77, 1, 0.59)
)
Run Code Online (Sandbox Code Playgroud)
现在我们画出这些情节
par(mar=c(1, 2, 2, 1)) #decrease default margin
layout(matrix(1:4, ncol=2)) #draw 4 plots to device
#loop over rows to draw them, add 1 as max and 0 as min for each var
lapply(1:4, function(i) {
radarchart(rbind(rep(1,6), rep(0,6), dd[i,-1]))
})
Run Code Online (Sandbox Code Playgroud)
这导致以下情节
