Масштабное построение нескольких попарных диаграмм Венна в R

Теоретически первый int *myNum = 10 имеет смысл, особенно если вы знаете, что есть полезный int по адресу ten & mdash; в общем, он редко полезен и потенциально весьма опасен.

Однако есть определенные назначения указателей, которые широко используются и совершенно безопасны:

int *myNum = 0;

На 99,9 +% современных архитектур процессора это то же самое, что и

int *myNum = NULL;

См. определение NULL в здесь .

Как правило, назначение переменных указателя лучше всего сделать, установив адрес другого.

int k, *p = &k;

0
задан atreju 15 January 2019 в 15:58
поделиться

1 ответ

Вы можете попробовать использовать аргумент widths из grid.arrange. Вам нужно будет определить соотношение всех итоговых диаграмм Венна. В вашем примере отношение общего размера составляет 800:110, то есть 7.27, поэтому, если вы сделаете grid.arrange(plot(fit1), plot(fit2), ncol = 2, widths = c(7.27, 1)), то fit2 будет намного меньше, чем fit1. Функция ggarrange() из ggpubr также должна работать.

fit1 <- euler(c(A=300, B=500, "A&B"=100))
fit2 <- euler(c(A=40, B=70, "A&B"=30))

tot1 <- 800
tot2 <- 110
ratio_v <- tot1/tot2

grid.arrange(plot(fit1), plot(fit2), ncol = 2, widths = c(ratio_v, 1))
ggpubr:ggarrange(plotlist = list(plot(fit1), plot(fit2)), ncol = 2, widths = c(ratio_v, 1))

enter image description here

Редактировать: хотите, чтобы отдельные попарные наборы имели собственные соотношения размеров вместо всего, что связано с глобальным максимумом. Это простой пример, но вы можете написать функцию, которая будет делать это автоматически для каждого. В основном установите максимальное количество столбцов (я просто выбрал 100), а затем преобразуйте каждое из ваших соотношений в 100. Создайте строку для каждого набора диаграмм Венна, затем rbind все их в матрицу и используйте [1111 ] аргумент.

### Make fits
fit1 <- euler(c(A=300, B=500, "A&B"=100))
fit2 <- euler(c(A=40, B=70, "A&B"=30))
fit3 <- euler(c(C=100, D=300, "C&D"=50))
fit4 <- euler(c(C=50, D=80, "C&D"=30))

### Assign totals 
tot1 <- 800
tot2 <- 110
tot3 <- 400
tot4 <- 130

### Find ratios
ratioAB_v <- round(tot1/tot2)
ratioCD_v <- round(tot3/tot4)

### Convert ratios
smallAB_v <- round(1/ratioAB_v*100)
smallCD_v <- round(1/ratioCD_v*100)

### Make rows
row1_v <- c(rep(1, (100-smallAB_v)), rep(2, smallAB_v))
row2_v <- c(rep(3, (100-smallCD_v)), rep(4, smallCD_v))

### Make matrix
mat <- rbind(row1_v, row2_v)

### Plot
grid.arrange(plot(fit1), plot(fit2), plot(fit3), plot(fit4), layout_matrix = mat)

enter image description here

0
ответ дан Qwfqwf 15 January 2019 в 15:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: