制作不同尺寸的多个饼图的散点图,使用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来定义饼图大小。另外,xy被视为定量变量(我尝试因子()没有任何机会),而不是定性变量。结果很丑,没有完整的图例。

> 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魔法。这将xy视为连续变量,但这不是问题,您可以通过设置正确的轴设置假装它们是离散的。

数据:

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

回到顶部