- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 ggplot2 制作雷达图。我使用了 geom_polygon 和 coord_polar 函数来创建一个封闭的曲线图。问题是在最后一个点和第一个点之间,线没有弯曲,与其他点相反。我想知道为什么会这样,我想修改这条线以使其弯曲。
我看过 coord_polar 函数,但没有找到任何解决方案......
这是我的代码:
dput(vsg_emo_nbRC)
structure(list(variable = structure(c(2L, 3L, 4L, 5L, 6L, 2L,
3L, 4L, 5L, 6L), .Label = c("", "Neutre", "Colère", "Embarras",
"Fierté", "Surprise"), class = "factor"), Groupe = structure(c(1L,
1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L), .Label = c("DS", "VS"), class = "factor"),
moy_DS = c(2.22, 3.11, 2.89, 3.33, 2.67, 3.36, 3.88, 3.48,
4, 3.6), std_err_DS = c(1.72, 1.17, 1.54, 1.12, 0.71, 0.95,
0.33, 0.65, 0, 0.71), IC_upper_DS = c(2.6, 3.37, 3.22, 3.58,
2.82, 3.43, 3.91, 3.53, 4, 3.66), IC_lower_DS = c(1.85, 2.86,
2.55, 3.09, 2.51, 3.29, 3.85, 3.43, 4, 3.54)), row.names = c(1L,
2L, 3L, 4L, 5L, 30L, 31L, 32L, 33L, 34L), class = "data.frame")
vsg_emo_nbRC %>%
ggplot(aes(x = variable, y = moy_DS, colour = Groupe, group = Groupe, linetype = Groupe)) +
geom_polygon(aes(y = IC_upper_DS), fill = "grey50", alpha = 0.2, linetype= "dotted") +
geom_polygon(aes(y = IC_lower_DS), fill = "grey99", alpha = 0.2, linetype="dotted") +
geom_polygon(fill = NA) +
theme_light() +
theme(panel.grid.minor = element_blank()) +
coord_polar() +
scale_colour_manual(values = c("#d8b365", "#5ab4ac")) +
scale_linetype_manual(values = c(1,1)) +
labs(x = "", y = "", title = "Performances moyennes de reconnaissance d'émotions dans la tâche visage") +
expand_limits(x=c(0,4), y=c(0,4)) +
geom_text(aes(label=moy_DS)) +
scale_y_continuous(limits = c(0,4))
最佳答案
原因coord_polar
不能很好地处理这种情况是因为在您的第一个和最后一个(Surprise & Neutre)x 位置之间有一个不可见的 x 轴边界,为此没有要弯曲的数据。
有一个解决方案需要构建,但它会涉及构建一个新的 geom,所以我们开始吧。首先,我们将构建我们将实际使用的函数:
geom_polarpoly <- function (mapping = NULL, data = NULL, stat = "identity",
position = "identity", rule = "evenodd", ...,
na.rm = FALSE, show.legend = NA, inherit.aes = TRUE)
{
layer(data = data, mapping = mapping, stat = stat, geom = GeomPolarPoly,
position = position, show.legend = show.legend, inherit.aes = inherit.aes,
params = list(na.rm = na.rm, rule = rule, ...))
}
geom_poly()
几乎相同的功能但是,它将 geom 设置为我们接下来要构建的 ggproto 对象:
GeomPolarPoly <- ggproto(
"GeomPolarPoly",
GeomPolygon,
draw_panel = function(data, panel_params, coord, rule = "evenodd", self) {
df <- split(data, data$group)
df <- lapply(df, function(dat) {
dummy <- rbind(head(dat, 1), tail(dat, 1))
dummy$x <- panel_params$theta.range
dummy$y <- mean(dummy$y)
rbind(dummy[1, ],
dat,
dummy[2, ])
})
data <- do.call(rbind, df)
ggproto_parent(GeomPolygon, self)$draw_panel(data = data,
panel_params = panel_params,
coord = coord,
rule = rule)
})
GeomPolygon
复制所有内容修改面板绘图代码。与原始面板绘图代码的不同之处在于,它现在将在 x 轴的两端放置两个额外的点,并为这两个点提供一个位于原始多边形的第一个点和最后一个点之间的 y 值。
vsg_emo_nbRC %>%
ggplot(aes(x = variable, y = moy_DS, colour = Groupe, group = Groupe, linetype = Groupe)) +
geom_polarpoly(aes(y = IC_upper_DS), fill = "grey50", alpha = 0.2, linetype= "dotted") +
geom_polarpoly(aes(y = IC_lower_DS), fill = "grey99", alpha = 0.2, linetype="dotted") +
geom_polarpoly(fill = NA) +
theme_light() +
theme(panel.grid.minor = element_blank()) +
coord_polar() +
scale_colour_manual(values = c("#d8b365", "#5ab4ac")) +
scale_linetype_manual(values = c(1,1)) +
labs(x = "", y = "", title = "Performances moyennes de reconnaissance d'émotions dans la tâche visage") +
expand_limits(x=c(0,4), y=c(0,4)) +
geom_text(aes(label=moy_DS)) +
scale_y_continuous(limits = c(0,4))
关于r - 如何使用ggplot2制作弯曲的雷达图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57774686/
我想尝试用 Java OpenGL 构建雷达。基本上,在该方法中,您传递玩家的当前位置、玩家面对的角度以及敌人的位置。如果敌人就在正前方,那么红点(象征敌人)应该在圆圈(雷达)的顶部,可以说是0度。如
我只是对声纳设备有一个总体的思考。声纳结果如何用数据类型表示。 目前我想出的解决方案是拥有一个 360 2D array,其值表明物体被击中时的距离,最大范围意味着那里什么也没有。这样做的问题是,对于
我有一个雷达图Js。 我不知道如何在区域内放置径向渐变。放置当前代码时,默认只取1种颜色作为background-color 当前代码: let ctx = document.getElementBy
我用在线生成器实现了 amChart。这是结果: https://live.amcharts.com/ODVhY/ 如您所见,带有值的标签仅在红牛上可见。 如何将其扩展到所有 5 个项目符号? 我的配
我需要一种灵活的方法在 ggplot2 中制作雷达/蜘蛛图。从我在 github 和 ggplot2 组上找到的解决方案,我已经走到了这一步: library(ggplot2) # Define a
我想用radare2调试程序“id3v2 -c halo test.mp3”。 如何将参数“-c halo test.mp3”传递给radare2? 我只用 rarun2 找到了一些东西,但是当我这样
我在哪里可以找到适用于 iOS 的优秀蜘蛛(雷达)图表库? (如下图) 我检查了“Core Plot”和“iOSPlot”开源项目,但这些都不支持蜘蛛图。 BR,元一。 最佳答案 在 Github 上
我是一名优秀的程序员,十分优秀!