我正在尝试使用ggplot生成一个刻面的饼图,并面临在每个切片中间放置文本的问题:
dat = read.table(text = "Channel Volume Cnt
AGENT high 8344
AGENT medium 5448
AGENT low 23823
KIOSK high 19275
KIOSK medium 13554
KIOSK low 38293", header=TRUE)
vis = ggplot(data=dat, aes(x=factor(1), y=Cnt, fill=Volume)) +
geom_bar(stat="identity", position="fill") +
coord_polar(theta="y") +
facet_grid(Channel~.) +
geom_text(aes(x=factor(1), y=Cnt, label=Cnt, ymax=Cnt),
position=position_fill(width=1))
Run Code Online (Sandbox Code Playgroud)
输出:

geom_text应该调整哪些参数才能将数字标签放在饼图切片的中间?
相关问题是Pie plot将其文本放在彼此的顶部,但它不处理facet的情况.
更新:在上面的问题中遵循Paul Hiemstra的建议和方法我改变了代码如下:
---> pie_text = dat$Cnt/2 + c(0,cumsum(dat$Cnt)[-length(dat$Cnt)])
vis = ggplot(data=dat, aes(x=factor(1), y=Cnt, fill=Volume)) +
geom_bar(stat="identity", position="fill") +
coord_polar(theta="y") +
facet_grid(Channel~.) +
geom_text(aes(x=factor(1),
---> y=pie_text,
label=Cnt, ymax=Cnt), …Run Code Online (Sandbox Code Playgroud) 我有一个使用geom_smooth()的极坐标图.平滑的黄土线虽然非常小,但环绕着地块的中心.我想"放大",这样你就可以更好地看到它.
使用类似的东西scale_y_continuous(limits = c(-.05,.7))会使geom_smooth环更大,但它也会改变它,因为它将使用limits = c(-.05,.7)参数限制的数据点重新计算.
对于笛卡尔图,我可以使用类似于coord_cartesian(ylim = c(-.05,.7))剪切图表而不是基础数据的东西.但是我看不到这样做coord_polar()
有任何想法吗?我认为grid.clip()在网格包中可能有一种方法可以做到这一点,但我没有太多运气.
有任何想法吗?
我有一个包含以下数据的数据框:
> data_graph
# A tibble: 12 x 4
# Groups: ATTPRO, ATTMAR [?]
x y group nb
<dbl> <dbl> <chr> <int>
1 0 0 1 1060
2 0 0 2 361
3 0 0 3 267
4 0 1 1 788
5 0 1 2 215
6 0 1 3 80
7 1 0 1 485
8 1 0 2 168
9 1 0 3 101
10 1 1 1 6306
11 1 1 2 1501
12 1 1 …Run Code Online (Sandbox Code Playgroud)