Получение бара в барплоте одинакового размера на многопанельных барплотах - PullRequest
0 голосов
/ 30 мая 2018

У меня есть любопытный вопрос, я использую par () для создания многопанельного барплота, я замечаю, что стержни имеют разные размеры, мне было интересно, возможно ли сделать стержни одинаковой ширины (размера) попереккаждая панель?Это создаст панели разных размеров, но это будет хорошо.Любые комментарии будут полезны.

У меня есть этот общий пример:

# create data
a<-c(1:100)
b<-c(1:200)
c<-c(1:300)
d<-c(1:400)
e<-c(1:500)

#make dataframes for barplots
test<-as.data.frame(cbind(a,b))
test1<-as.data.frame(cbind(a,b,c))
test2<-as.data.frame(cbind(a,b,c,d))
test3<-as.data.frame(cbind(a,b,c,d,e))

#gets means for each column
a1<-colMeans(test)
a2<-colMeans(test1)
a3<-colMeans(test2)
a4<-colMeans(test3)

#lets plot
pdf(file= "/Users/Highf_000/Desktop/prac.pdf");
par(mfrow = c(2, 4),     # 2 rows x 4 columns layout
      oma = c(2, 2, 0, 0), # two rows of text at the outer left and bottom margin
      mar = c(5, 5, 2, 1)+0.1, # space for one row of text at ticks and to separate plots
      mgp = c(2, 1, 0),    # axis label at 2 rows distance, tick labels at 1 row
      xpd = NA) 

barplot(mean(a))
barplot(a1)
barplot(a2)
barplot(a3)
barplot(a4)

dev.off()

Это вывод

enter image description here

После предложения Ребекки

enter image description here

Как мы преодолеваем исчезновение сюжета в многостраничном макетеи как мы можем исправить заголовок по центру, а не на графике?

1 Ответ

0 голосов
/ 30 мая 2018

Упрощение вашего примера

a1 <- c(1,2)
a2 <- c(1,2,3)
a3 <- c(1,2,3,4)

barplot(a1) ## produces uneven bars
barplot(a2) ## produces uneven bars
barplot(a3) ## produces uneven bars

Как объяснено здесь , вы можете выполнить хотя бы одно из следующих действий:

Опция 1

df <- data.frame(bar1 = c(1, 2, 0,0), 
                 bar2 = c(1, 2, 3, 0), 
                 bar3 = c(1, 2, 3, 4))

barplot(as.matrix(df), beside = TRUE)

Вариант 2

bar1 <- barplot(a1, xlim = c(0, 1), width = 0.1)
bar2 <- barplot(a2, xlim=c(0,1), width = 0.1)
bar3 <- barplot(a3, xlim=c(0,1), width = 0.1)

Существует также опция ggplot, если вы не увлечены барплотом.

...