我想制作一个径向堆叠条形图。我有这样的事情:
ggplot(diamonds, aes(clarity, fill= cut)) + geom_bar() + coord_polar()
产生如下情节:
然而这非常拥挤。有没有办法改变轴,使这个条形图是空心的?我希望零开始不在圆的中心,但是,比如从中心开始半径的1/3或1/2。有关于此的任何想法吗?
答案 0 :(得分:1)
你可以告诉coord_plot
稍微扩大一点 - 这会在中间放一个小洞:
ggplot(diamonds, aes(clarity, fill= cut)) +
geom_bar() +
coord_polar(expand=TRUE)
然后你可以控制y比例扩展(参数expand=...
到scale_y_continuous(...)
。不幸的是我认为扩展是对称的,即如果你在底部添加空间(即在中间,你也将它添加到顶部(即外部):
ggplot(diamonds, aes(clarity, fill= cut)) +
geom_bar() +
coord_polar(expand=TRUE) +
scale_y_continuous(expand=c(0.5, 0))
答案 1 :(得分:0)
我通过轴转换解决了类似的问题。此转换的作用是:
offset
sqrt
变换半径,以使条形区域与值相对应。我用它来绘制一天中时间的直方图,偏移使较小的值更清晰可见。当然,圆形图只对季节性数据,方向数据,……有用。
require(ggplot2)
require(scales)
offset=2000
my_trafo_trans <- function() trans_new(
"my_trafo",
function(y){
sign(y)*sqrt(abs(y))+offset^2
},
function(r){
r^2+offset^2
}
)
ggplot(diamonds, aes(clarity, fill= cut)) +
geom_bar() +
scale_y_continuous(limits=c(-1*offset, 15000)) +
coord_trans(y = "my_trafo") +
coord_polar()