Создание сгруппированной гистограммы с использованием матрицы в R - PullRequest
0 голосов
/ 11 февраля 2019

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

создание векторов

wt250 <- c (as.числовой (df $ WT.250 [which (df $ X == "Ifng")]), as.numeric (df $ WT.250 [which (df $ X == "Prdm1")]), as.numeric (df $ WT.250 [which (df $ X == "Il2ra")]), as.numeric (df $ WT.250 [which (df $ X == "Cd69")]) wt50 <- c (as.числовой (df $ WT.50 [which (df $ X == "Ifng")]), as.numeric (df $ WT.50 [which (df $ X == "Prdm1")]), as.numeric (df $ WT.50 [который (df $ X == "Il2ra")]), as.numeric (df $ WT.50 [который (df $ X == "Cd69")])) wt10 <- c (как.numeric (df $ WT.10 [which (df $ X == "Ifng")]), as.numeric (df $ WT.10 [which (df $ X == "Prdm1")]), as.numeric(df ​​$ WT.10 [which (df $ X == "Il2ra")]), as.numeric (df $ WT.10 [which (df $ X == "Cd69")]) </p>

создание матрицы

m <- матрица (c (wt250, wt50, wt10), nrow = 3, ncol = 4, byrow = TRUE) </p>

векторы для деталей гистограммы

имена <- c ("WT-250", "WT-50", "WT-10") цвета <- c ("красный", "оранжевый""," желтый "," green ") </p>

построение графика гистограммы

гистограмма (m, main =" Genes ", ylab =" Concentration ", names.arg = names, col = colors, рядом с = ИСТИНА)

Я ожидаю, что сгруппированная гистограмма (несколько столбцов, которые смежны друг с другом) с WT-250, WT-50 и WT-10 на оси х, что 4 баракаждый в цветах красный, оранжевый, желтый и зеленый.Вместо этого я получаю следующее сообщение об ошибке: Ошибка в -0.01 * высота: не числовой аргумент для бинарного оператора

1 Ответ

0 голосов
/ 11 февраля 2019

Если вам нужно быстрое исправление, замените создание матрицы:

m <- matrix(c(wt250, wt50, wt10), nrow=3, ncol=4, byrow = TRUE)

на

m <- matrix(c(wt250, wt50, wt10), nrow=4, ncol=3)

Так что теперь у вас есть векторы в столбцах.

Вместоиз "имён" используйте "colnames".Тогда ваш код должен работать, и барплот сможет построить то, что вы хотите.

Пример:

mat <- matrix(1:12, nrow = 4, ncol = 3)
colnames(mat) <- letters[1:3]
rownames(mat) <- letters[23:26]

barplot(mat,col = c("red", "blue", "cyan", "orange"), beside = TRUE)

Grouped_bar_chart

...