【发布时间】:2019-05-15 09:49:55
【问题描述】:
假设我有一些长度的 6 个方向的线性数据。我想制作“风玫瑰”风格的图表。
###create sample data
a <- c(1,2,3,4,5,6) #directions
perc <- c(0.15,0.05,0.3,0.15,0.05,0.3) #percentual lengths
lab <- c("A", "B", "C", "D", "E", "F") #labels of directions
data <- data.frame(a,perc,lab)
我已经尝试了 ggplot2 的两个变体,使用 coord_polar 和 coord_radar(受 an article from Erwan Le Pennec: From Parallel Plot to Radar Plot 启发)。每一个都部分正确,部分错误(从我的期望来看):
#similar parameters in both variants:
chart_stuff <- list(
geom_polygon(aes(x=a, y=perc, col = 1), fill=NA,show.legend = F),
geom_segment(aes(x=as.factor(a), yend=perc, xend=as.factor(a), y=0), size=2),
scale_x_discrete(labels=data$lab),
scale_y_continuous(labels = scales::percent, limits = c(0,0.31)),
theme_light(),
theme(axis.title = element_blank())
)
#chart1
ggplot(data) +
chart_stuff+
coord_polar(start=(-pi/6))+
ggtitle("coord_polar: wrong polygon, good segments")
#chart2
#coord_radar function with modified start parameter:
coord_radar <- function (theta = "x", start = -pi/6, direction = 1) {
theta <- match.arg(theta, c("x", "y"))
r <- if (theta == "x") "y" else "x"
ggproto("CordRadar", CoordPolar, theta = theta, r = r, start = start,
direction = sign(direction),
is_linear = function(coord) TRUE)
}
ggplot(data) +
chart_stuff+
coord_radar()+
ggtitle("coord_radar: good polygon, wrong segments")
输出:
所以我想要一张带有多边形边界直线和表示方向的线段的图像(以百分比的长度表示)。我猜错误可能在于将离散比例与连续比例混合,但我无法解决。有什么想法吗?
【问题讨论】:
-
看来
coord_radar并没有改变xend和yend的美学。
标签: r ggplot2 polar-coordinates