2016-01-25 5 views
0

У меня есть два 3x2 матрицы А и В:простой способ создания сгруппированных столбчатой ​​в R

A:

  n2 n3 
Part1  1 5 
Part2  2 6 
Part3  3 7 

B:

  n2 n3 
Part1  5 1 
Part2  6 2 
Part3  7 3 

и я хочу, чтобы создать стек бар на основе столбцов n2, n3 для A и B, а затем группируйте штабеля, так что n2 для A и B сгруппированы вместе бок о бок и одинаковы для n3. Это то, что я пробовал:

d1 <- read.csv("A.csv", header=T, dec=".",sep = " ") 
    d1 <- subset(d1, select = c(n2, n3)) 

    d2 <- read.csv("B.csv", header=T, dec=".",sep = " ") 
    d2 <- subset(d2, select = c(n2, n3)) 

    d <- cbind(d1[,1],d2[,1],d1[,2],d2[,2]) 

    barplot(t(d), beside=T, ,col=c("lawngreen","firebrick","deepskyblue"), 
      space=c(0,0,0.2,0)) 

и производит: enter image description here

Какие бары сгруппированы, но не штабелирования и цвета неправильно используются, как хорошо. И когда я изменяю barplot к следующему, он производит ниже сюжет:

barplot(t(d), col=c("lawngreen","firebrick","deepskyblue"), 
      space=c(0,0,0.2,0)) 

enter image description here

В каких барах ошибочно сложены, и неправильно сгруппированы. Я ценю это, если вы поможете мне разрешить это, поскольку я новичок в R:/

ответ

1

barplot() группирует столбцы, используя столбцы вашей матрицы ввода. Используя это как данные:

> (d <- matrix((1:7)[-4],ncol=2)[,c(1,2,2,1)]) 
    [,1] [,2] [,3] [,4] 
[1,] 1 5 5 1 
[2,] 2 6 6 2 
[3,] 3 7 7 3 

Вы можете просто снять транспонирование с предыдущего кода:

barplot(d, col=c("lawngreen","firebrick","deepskyblue"), space=c(0,0,0.2,0)) 

stacked bar plot

+0

Aha большой. Быстрый вопрос, есть ли способ назначить n2 и n3 оси x? – user3639557

+0

Вы можете установить 'names.arg' в barplot, но он будет центрироваться под панелью, а не группой баров. Чтобы правильно настроить ярлыки, вы, вероятно, были бы счастливее переделать сюжет в ggplot2 –

+0

Но я не знаю ggplot: / – user3639557

Смежные вопросы