Построение многоуровневой линейной диаграммы для конкретной организации данных - PullRequest
0 голосов
/ 20 мая 2019

Я хотел бы построить столбчатую диаграмму в виде столбцов с осью X, представляющей количество геномов (или только организмов), и осью Y, представляющей количество кластеров генов, которые встречаются в точном количестве геномов. Поскольку я знаю, из каких организмов произошли эти гены, я бы хотел, чтобы каждый столбец демонстрировал влияние каждого генома на построение этого столбца.

Пример моих данных:

df = data.frame (genomes_involed = c(1,2,2,3,3,1), number_of_genes = c(1,3,2,3,4,2), genome1_genes = c("A","B","*", "B", "A,M","*"), genome2_genes = c("*","C,B","E", "D", "N", "*"), genome3_genes = c("*","*", "L", "H", "O", "P,A"))

Где:

строк - это генные кластеры;

1) в первом столбце указано количество геномов, участвующих в каждом генном кластере;

2) второй столбец представляет количество генов в кластере;

3) столбцы 3-5 представляют конкретные названия генов из разных геномов;

"*" показывает, что в кластере нет генов для этого генома.

У него более или менее конкретная организация, поэтому я не уверен, как правильно это сформулировать, например, в этой функции ggplot:

ggplot(df, aes(x = factor(Time), y = Value, fill = factor(Type))) + geom_bar(stat="identity", position = "stack")

В результате я хочу получить 3 столбца по оси X, представляющих количество геномов 1,2 или все 3; ось y, представляющая количество кластеров, найденных в 1, 2 или во всех 3 геномах; и покажите влияние в процентах каждого генома на построение каждого конкретного столбца.

Требуемый выход для этого образца здесь

1 Ответ

0 голосов
/ 22 мая 2019

Я немного смущен, но я думаю, что вы говорите, что существует несколько организмов, и у каждого организма есть либо геном 1, 2, либо 3. Вы хотите три столбца на оси х - один для генома 1, одиндля генома 2 и один для генома 3 - и стеки покажут, сколько организмов с геномом 1 имели 1 кластер генов, сколько 2 кластеров генов и сколько имели 3 (и т. д. для каждого из других геномов)?

df = data.frame (genomes_envolved = c(1,2,2,3,3,1), number_of_genes = c(1,3,2,3,3,2), genome1_genes = c("A","B","*", "B", "A,M","*"), genome2_genes = c("*","C,B","E", "D", "N", "*"), genome3_genes = c("*","*", "L", "H", "O", "P"))

df[df=="*"]<-NA #I changed asterisk to NA
df$genomes_envolved<-as.factor(df$genomes_envolved)
df$number_of_genes<-as.factor(df$number_of_genes)

ggplot(data = df, aes(x = genomes_envolved,fill=number_of_genes)) + geom_bar()

enter image description here

...