[R] Aligning barplot

David Winsemius dwinsemius at comcast.net
Sun Aug 26 23:26:19 CEST 2012


On Aug 26, 2012, at 1:52 PM, darnold wrote:

> Hmmm....
>
> This worked this time. And I didn't use the transform t.

Yeah. There is something pathological that happens when you do this:

tblA <- table(BagA)
tblA[8] <- 0


 > tmp <-c(tmp,0)
 > is.vector(tmp)
[1] TRUE

But if you instead use tmp[8] <- 0 then
 > is.vector(tmp)
[1] FALSE

I haven't quite figured out exactly what it is, but when it fails the  
is.vector test inside barplot you get an error.


>
> BagA <- c(-1000,10,10,10,10,10,10,
>          10,20,20,20,20,20,20,30,
>          30,40,40,50,60)
>
> BagB <- c(10,20,30,30,40,40,50,50,
>          50,50,50,50,60,60,60,60,
>          60,60,60,1000)
>
> tblA <- table(BagA)
> tblA <- c(tblA,0)
> names(tblA) <- c(names(table(BagA)),"1000")
>
> tblB <- table(BagB)
> tblB <- c(0,tblB)
> names(tblB) <- c("-1000",names(table(BagB)))
>
> layout(c(2,1))
>
> barplot(tblB, main="Bag B")
> barplot(tblA, main="Bag A")
>
> D.
>
>
> David Winsemius wrote
>>
>>
>> darnold wrote
>>>
>>> All, Consider:
>>>
>>> BagA <- c(-1000,10,10,10,10,10,10,
>>>          10,20,20,20,20,20,20,30,
>>>          30,40,40,50,60)
>>>
>>> BagB <- c(10,20,30,30,40,40,50,50,
>>>          50,50,50,50,60,60,60,60,
>>>          60,60,60,1000)
>>>
>>> layout(c(2,1))
>>>
>>> barplot(table(BagB))
>>> barplot(table(BagA))
>>>
>>> At this point, I'd like to arrange the plots so that the 10-bars are
>>> aligned, the 20-bars are aligned, etc. So, I started thinking, how  
>>> do I
>>> add an entry to a table? I tried:
>>>
>>> tmp <- table(BagA)
>>> tmp[8] <- 0
>>> names(tmp)[8] <- "1000"
>>>
>>> barplot(tmp)
>>>
>>> But I got this error:
>>>
>>>
>>
>> Try using t(tmp) when plotting. When you started mucking with that
>> table-object, it got converted (effectively) to a one row matrix  
>> (even
>> though it retained it "table"-class attribute)  and you need to  
>> make it a
>> one column matrix to get the desired results with barplot().
>>
>>> tmpB <- table(BagB)
>>> tmpB <- c(0, tmpB)
>>> names(tmpB) <- c(-1000, names(table(BagB)) )
>>
>>> barplot( t(tmpB) )
>>> barplot( t(tmp) )
>>
>>
>> -- 
>> David (W.)
>>
>
>
>
>
> --
> View this message in context: http://r.789695.n4.nabble.com/Aligning-barplot-tp4641356p4641359.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

David Winsemius, MD
Alameda, CA, USA




More information about the R-help mailing list