Cum să scrieți etichete în barplot pe axa x cu nume duplicate? (Programare, R, Plot)

Iftikhar a intrebat.

Încerc să fac un barplot simplu, dar am o problemă că am nume duplicate pe axa x. Deci, atunci când încerc să scriu nume pe axa x, nu se afișează șirul complet. Am următoarele date

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)

și folosesc 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"))

Dar nu funcționează. De asemenea, am folosit

axis()

Dar nu funcționează la fel de bine.

Vă mulțumesc anticipat.

Comentarii

  • Ați primit vreun mesaj de eroare? – user554546
4 răspunsuri
Gavin Simpson

Nu, xlab este pentru a furniza o etichetă pentru întreaga axă x a graficului, nu pentru etichetarea barelor individuale.

barplot() ia etichetele pentru bare din denumirile vectorului trasat (sau ceva care poate fi derivat într-un set de nume).

> 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)

Editați: După cum menționează @Aaron, barplot() are, de asemenea, o funcție names.arg pentru a furniza etichete pentru bare. Aceasta este ceea ce ?barplot are de spus:

names.arg: un vector de nume care să fie trasate sub fiecare bară sau grup de bare. Dacă acest argument este omis, atunci numele sunt preluate de la names atributul lui height dacă este vorba de un vector sau de numele coloanelor dacă este vorba de o matrice.

Acest lucru explică comportamentul implicit în cazul în care names.arg nu este furnizat – care constă în preluarea numelor din obiectul trasat. Utilizarea cea mai utilă pentru dvs. va fi în principal o chestiune de gust. Faptul de a nu avea nume de rânduri/coloane ar putea accelera puțin codul, dar multe dintre funcțiile R vor lua numele names (sau altele similare, de exemplu, numele rândurilor) direct din obiecte, astfel încât nu trebuie să continuați să furnizați etichete pentru trasarea/etichetarea rezultatelor etc.

Aaron a părăsit Stack Overflow

xlab ar trebui să fie names.arg. A se vedea ?barplot pentru detalii.

bill_080

Încearcă asta:

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"))

IRTFM

Modul de utilizare axis() este de a capta punctele medii, ceea ce este ceea ce returnează funcția barplot. A se vedea ?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)

Tags:,