我有一个圆形的情节,我想找到一种方法去除中间的小白圈。
这是我的代码:
ggplot(d5)+geom_tile(aes(x=x, y=y, fill=xyz))+
scale_y_continuous(expand=c(0,0),breaks=NULL,limits=c(0,3.6))+
scale_fill_continuous(low="darkgreen", high="white")+
coord_polar(start=-1*pi/2, direction=1)+
theme_bw()+
theme(panel.grid.major = element_blank(),panel.grid.minor = element_blank())
非常感谢。
答案 0 :(得分:2)
我在这里做了一个虚拟的例子:
require(dplyr)
expand.grid(x = 1:20, y = 1:2) %>%
mutate(z = rnorm(length(x))) %>%
ggplot()+geom_tile(aes(x=x, y=y, fill=z))+
scale_y_continuous(expand=c(0,0),breaks=NULL,limits=c(0,3.6))+
scale_fill_continuous(low="darkgreen", high="white")+
coord_polar(start=-1*pi/2, direction=1)+
theme_bw()+
theme(panel.grid.major = element_blank(),panel.grid.minor = element_blank())
您使用limits
的{{1}}和expand
参数走在正确的轨道上,您只需要确定实际下限的位置。为此,让我们在没有scale_y
且没有coord_polar
的情况下绘制相同的集合。
因此,在我的示例中,磁贴的最小边缘位于scale_y
。因此,您必须弄清楚最小的y=0.5
值是多少,然后为y
(即1)减去默认height
的一半。将该值用于较低geom_tile
限制,并且饼图中的孔将消失。
答案 1 :(得分:1)
只是@Brian给出的答案的补充。
消除中间小白圈的y轴的正确极限可以计算如下:
library(dplyr)
library(ggplot2)
set.seed(4321)
d5 <- expand.grid(x = 1:20, y = 1:2) %>%
mutate(z = rnorm(length(x)))
yval <- sort(unique(d5$y))
h <- (yval[2] - yval[1])/2
ylim_lo <- yval[1] - h
ylim_up <- yval[2] + h
ggplot(d5)+geom_tile(aes(x=x, y=y, fill=z))+
scale_y_continuous(expand=c(0,0), breaks=NULL, limits=c(ylim_lo,ylim_up)) +
scale_fill_continuous(low="darkgreen", high="white") +
coord_polar(start=-1*pi/2, direction=1) +
theme_bw()+
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())