Самый простой способ сгруппировать барплот

У меня есть следующий фреймворк:

Catergory Reason Species 1 Decline Genuine 24 2 Improved Genuine 16 3 Improved Misclassified 85 4 Decline Misclassified 41 5 Decline Taxonomic 2 6 Improved Taxonomic 7 7 Decline Unclear 41 8 Improved Unclear 117 

Я пытаюсь создать сгруппированную гистограмму, виды как высоту, а затем 2 цвета для катер.

Я бы опубликовал изображение того, что у меня есть, но у меня недостаточно очков репутации … но вот мой код:

 Reasonstats<-read.csv("bothstats.csv") Reasonstats2<-as.matrix(Reasonstats[,3]) barplot((Reasonstats2),beside=T,col=c("darkblue","red"),ylab="number of species",names.arg=Reasonstats$Reason, cex.names=0.8,las=2,space=c(0,100) ,ylim=c(0,120)) box(bty="l") 

Теперь, что я хочу, не нужно дважды отмечать два бара и группировать их друг от друга, я попытался изменить значение пространства на всевозможные вещи, и он, похоже, не сдвигает столбцы друг от друга. Может ли кто-нибудь сказать мне, что я делаю неправильно?

с ggplot2:

 library(ggplot2) Animals <- read.table( header=TRUE, text='Category Reason Species 1 Decline Genuine 24 2 Improved Genuine 16 3 Improved Misclassified 85 4 Decline Misclassified 41 5 Decline Taxonomic 2 6 Improved Taxonomic 7 7 Decline Unclear 41 8 Improved Unclear 117') ggplot(Animals, aes(factor(Reason), Species, fill = Category)) + geom_bar(stat="identity", position = "dodge") + scale_fill_brewer(palette = "Set1") 

Барная диаграмма

Не lattice а использование lattice и barchart :

 library(lattice) barchart(Species~Reason,data=Reasonstats,groups=Catergory, scales=list(x=list(rot=90,cex=0.8))) 

введите описание изображения здесь

Существует несколько способов сделать графики в R; lattice – одна из них и всегда разумное решение, +1 для @agstudy. Если вы хотите сделать это в базовой графике, вы можете попробовать следующее:

 Reasonstats <- read.table(text=" Category Reason Species Decline Genuine 24 Improved Genuine 16 Improved Misclassified 85 Decline Misclassified 41 Decline Taxonomic 2 Improved Taxonomic 7 Decline Unclear 41 Improved Unclear 117", header=T) ReasonstatsDec <- Reasonstats[which(Reasonstats$Category=="Decline"),] ReasonstatsImp <- Reasonstats[which(Reasonstats$Category=="Improved"),] Reasonstats3 <- cbind(ReasonstatsImp[,3], ReasonstatsDec[,3]) colnames(Reasonstats3) <- c("Improved", "Decline") rownames(Reasonstats3) <- ReasonstatsImp$Reason windows() barplot(t(Reasonstats3), beside=T, ylab="number of species", cex.names=0.8, las=2, ylim=c(0,120), col=c("darkblue","red")) box(bty="l") 

введите описание изображения здесь

Вот что я сделал: я создал матрицу с двумя столбцами (потому что ваши данные были в столбцах), где столбцы были видовыми значениями для Decline и для Improved . Затем я сделал эти категории именами столбцов. Я также сделал Reason s именами строк. Функция barplot() может работать над этой матрицей, но хочет данные в строках, а не в столбцах, поэтому я подал ей транспонированную версию матрицы. Наконец, я удалил некоторые из ваших аргументов в ваш barplot() функции barplot() , которые больше не нужны. Другими словами, проблема заключалась в том, что ваши данные не были настроены так, как это barplot() для вашего предполагаемого вывода.

Я написал оболочку функции bar() для barplot() чтобы делать то, что вы пытаетесь сделать здесь, так как мне нужно делать подобные вещи часто. Ссылка на функцию Github приведена здесь . После копирования и вставки его в R вы делаете

 bar(dv = Species, factors = c(Category, Reason), dataframe = Reasonstats, errbar = FALSE, ylim=c(0, 140)) #I increased the upper y-limit to accommodate the legend. 

Единственное удобство заключается в том, что он поместит легенду на сюжет, используя имена уровней в вашей категориальной переменной (например, «Отклонить» и «Улучшено»). Если каждый из ваших уровней имеет несколько наблюдений, он также может errbar=FALSE строки ошибок (которые здесь не применяются, следовательно, errbar=FALSE

введите описание изображения здесь

  • Выходной журнал ошибок / предупреждений (txt-файл) при запуске R-скрипта в командной строке
  • Планирование R Script
  • Блочно-диагональное связывание матриц
  • Ошибка DocumentTermMatrix в аргументе Corpus
  • Добавление меток в гистограмму ggplot
  • ggplot2: сортировка сюжета
  • Как выбрать переменные в фрейме данных R, чьи имена содержат определенную строку?
  • Как получить таблицу непредвиденных расходов?
  • Указание ширины панели ggplot2
  • Участок с осью 2 y, одна ось y слева и другая ось y справа
  • ggplot с центрированными именами на карте
  • Давайте будем гением компьютера.