Изменение порядка и изменение размера оси (R ggplot) - PullRequest
0 голосов
/ 21 апреля 2020

Я пытаюсь изменить оба графика, порядок и размер оси x для обоих. Они не могут быть изменены соответственно

Создание DF

contig_count_average <- data.frame(Genome_Type = c("MBT", "Anglucyclines", "Whole Genome"),
                                   Contig_Count_Average = c("2.91","83.7","608.3"))

Сюжет

p2 <- ggplot(contig_count_average, mapping = aes(x = reorder(Genome_Type, Contig_Count_Average), Contig_Count_Average, fill = Genome_Type))  + 
  xlab("Genome") +
  ylab("Contig No.") + 
  ggtitle("Contig Count per Genome Distribution") +
  geom_bar(stat = "identity") +
  theme(text = element_text(size=20),
       axis.text.x = element_text(angle=90, hjust=1)) +
  guides(fill=guide_legend(title="Genome Type")) +
  coord_flip() +
  theme_bw() +
  scale_y_continuous(limits = c(0,2835), expand = c(0, 0)) +
  scale_x_discrete(labels = abbreviate)
p

Я получаю следующее предупреждение:

1: In Ops.factor(Contig_Count_Average) : ‘-’ not meaningful for factors

1 Ответ

1 голос
/ 21 апреля 2020

Проблема в том, что Contig_Count_Average рассматривается как факторы в contig_count_average.

Мы можем изменить его на цифру c, выполнив:

contig_count_average <- type.convert(contig_count_average, as.is = TRUE

или

contig_count_average$Contig_Count_Average <- as.numeric(as.character(contig_count_average$Contig_Count_Average))

, а затем используйте код ggplot.

p2 <- ggplot(contig_count_average, mapping = aes(x = reorder(Genome_Type, 
         Contig_Count_Average), Contig_Count_Average, fill = Genome_Type))  + 
         xlab("Genome") +
         ylab("Contig No.") + 
         ggtitle("Contig Count per Genome Distribution") +
         geom_bar(stat = "identity") +
         theme(text = element_text(size=20),
         axis.text.x = element_text(angle=90, hjust=1)) +
         guides(fill=guide_legend(title="Genome Type")) +
         coord_flip() +
         theme_bw() +
         scale_y_continuous(limits = c(0,2835), expand = c(0, 0)) +
         scale_x_discrete(labels = abbreviate)

p2

enter image description here

Также обратите внимание, что вы можете использовать geom_col вместо geom_bar(stat = "identity").

...