Подтвердить что ты не робот

Как писать ярлыки в штриховом шрифте по оси х с дублирующимися именами?

Я пытаюсь сделать простой штрих-код, но у меня есть проблема, что я дублировал имена по оси x. Поэтому, когда я пытаюсь писать имена по оси x, он не показывает полную строку. У меня следующие данные

x <- c(1.8405917,0.3265986,1.5723623,464.7370299,0.0000000,3.2235716,
       3.1223534, 7.0999787, 1.7122258,3.2005524,3.7531266,469.4436828)

и я использую barplot

barplot(x,xlab=c("AA/AA","AA/CC","AA/AC","AA/NC","CC/AA","CC/CC","CC/AC",
                 "CC/NC","AC/AA","AC/CC","AC/AC","AC/NC"))

Но это не сработает. Я также использовал

axis()

Но это не работает.

Спасибо заранее.

4b9b3361

Ответ 1

Нет, xlab предназначен для предоставления метки для всей оси x графика, а не для маркировки отдельных столбцов.

barplot() берет метки для столбцов от названий векторного графика (или того, что может быть выведено в набор имен).

> names(x) <- c("AA/AA", "AA/CC", "AA/AC", "AA/NC", "CC/AA", "CC/CC", "CC/AC",
+               "CC/NC", "AC/AA", "AC/CC", "AC/AC", "AC/NC")
> barplot(x)
> ## or with labels rotated, see ?par
> barplot(x, las = 2)

Изменить: Как упоминает @Aaron, barplot() также имеет names.arg для подачи меток для баров. Это то, что ?barplot должно сказать:

names.arg: вектор имен, которые будут отображаться под каждым баром или группой           бары. Если этот аргумент опущен, то имена принимаются           из атрибута names height, если это вектор,           или имена столбцов, если это матрица.

Это объясняет поведение по умолчанию, если names.arg не поставляется, - чтобы отображать имена из объекта. Какое использование наиболее полезно для вас, в основном будет вопросом вкуса. Не имея строк/столбцов/имен может немного ускорить кодирование, но многие из R-функций будут принимать атрибут names (или аналогичный, например, имена строк) непосредственно из объектов, поэтому вам не нужно предоставлять метки для построения/маркировка результатов и т.д.

Ответ 2

xlab должен быть names.arg. Подробнее см. ?barplot.

Ответ 3

Попробуйте следующее:

barplot(x, cex.names=0.7,
        names.arg=c("AA/AA","AA/CC","AA/AC","AA/NC","CC/AA","CC/CC","CC/AC",
                    "CC/NC","AC/AA","AC/CC","AC/AC","AC/NC"))

Ответ 4

Способ использования axis() - это захват средних точек, что и возвращает функция barplot. См. ?barplot:

 mids <- barplot(x, xlab="")

 axis(1, at=mids, labels=c("AA/AA","AA/CC","AA/AC","AA/NC","CC/AA","CC/CC",
                           "CC/AC","CC/NC","AC/AA","AC/CC","AC/AC","AC/NC"), 
      las=3)