制作不同尺寸的多个饼图的散点图,使用GGPLOT2中的R
我有包含以下数据的数据帧:制作不同尺寸的多个饼图的散点图,使用GGPLOT2中的R
> 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 3 379
我的目标是具有以下图表:
- 两个X和ÿ,定性变量,被投入作为X/Y轴
- NB,quantita略去变量,代表馅饼大小
- 组,定性变量,代表馅饼份
最好结果approching此使用GGPLOT2包只给我气泡,与此代码。我无法找到一个解决方案,把在它的馅饼:
library(ggplot2) ggplot(data_graph, aes(y = factor(y),x = factor(x))) +
geom_point(aes(colour = group, size = nb)) +
theme_bw() +
cale_size(range = c(1, 20)) +
labs(x = "x", y = "y", color = "group", size = "nb")
使用scatterpie包没有帮助那么多。这次馅饼画得很好,但我找不到一种方法来使用nb来定义饼图大小。另外,x和y被视为定量变量(我尝试因子()没有任何机会),而不是定性变量。结果很丑,没有完整的图例。
> tmp x y A B C
1 0 0 1060 361 267
2 0 1 788 215 80
3 1 0 485 168 101
4 1 1 6306 1501 379
library(scatterpie)
ggplot() +
geom_scatterpie(aes(x = x, y = y), data = tmp, cols = c("A", "B", "C")) +
coord_fixed()
如何验证码才能有第二人的馅饼第一图表改变?
回答:
这似乎是来自ggforce的geom_arc_bar()
的情况,带有一些dplyr魔法。这将x
和y
视为连续变量,但这不是问题,您可以通过设置正确的轴设置假装它们是离散的。
数据:
data_graph <- read.table(text = "x y group nb 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 3 379", header = TRUE)
代码:
library(ggforce) library(dplyr)
# make group a factor
data_graph$group <- factor(data_graph$group)
# add case variable that separates the four pies
data_graph <- cbind(data_graph, case = rep(c("Aaaa", "Bbbb", "Cccc", "Dddd"), each = 3))
# calculate the start and end angles for each pie
data_graph <- left_join(data_graph,
data_graph %>%
group_by(case) %>%
summarize(nb_total = sum(nb))) %>%
group_by(case) %>%
mutate(nb_frac = 2*pi*cumsum(nb)/nb_total,
start = lag(nb_frac, default = 0))
# position of the labels
data_labels <- data_graph %>%
group_by(case) %>%
summarize(x = x[1], y = y[1], nb_total = nb_total[1])
# overall scaling for pie size
scale = .5/sqrt(max(data_graph$nb_total))
# draw the pies
ggplot(data_graph) +
geom_arc_bar(aes(x0 = x, y0 = y, r0 = 0, r = sqrt(nb_total)*scale,
start = start, end = nb_frac, fill = group)) +
geom_text(data = data_labels,
aes(label = case, x = x, y = y + scale*sqrt(nb_total) + .05),
size =11/.pt, vjust = 0) +
coord_fixed() +
scale_x_continuous(breaks = c(0, 1), labels = c("X0", "X1"), name = "x axis") +
scale_y_continuous(breaks = c(0, 1), labels = c("Y0", "Y1"), name = "y axis") +
theme_minimal() +
theme(panel.grid.minor = element_blank())
以上是 制作不同尺寸的多个饼图的散点图,使用GGPLOT2中的R 的全部内容, 来源链接: utcz.com/qa/258674.html