# [R] Bar Charts

Rui Barradas ru|pb@rr@d@@ @end|ng |rom @@po@pt
Wed Oct 16 09:53:03 CEST 2019

```Hello,

Inline.

Às 02:51 de 16/10/19, Jim Lemon escreveu:
> Hi Jeff,
> Let's say you have the following data:
>
> set.seed(12345)
> CONTBR_RESULT<-sample(20:200,30)
>
> If you don't mind ordering the results, you can do this:
>
> barplot(rev(sort(CONTBR_RESULT))[1:15],...)
>
> If you want the values in the original order:
>
> barplot(CONTBR_RESULT[order(CONTBR_RESULT) > 15],...)

This is not right, it keeps the 15 largest *indices*, not values.

Here is a way.

TopN <- function(x, n, keep.order = FALSE){
nvec <- seq_len(n)
if(keep.order){
i <- order(x, decreasing = TRUE)[nvec]
x[i[order(i)]]
}else{
sort(x, decreasing = TRUE)[nvec]
}
}

barplot(TopN(CONTBR_RESULT, 15))
barplot(TopN(CONTBR_RESULT, 15, TRUE))

Hope this helps,

>
> Jim
>
> On Wed, Oct 16, 2019 at 11:21 AM <reichmanj using sbcglobal.net> wrote:
>>
>> r-help forum
>>
>>
>>
>> I have a database that I have performed a "group_by" of a variable called
>> CONTBR_OCCUPATION. I then simply want to plot out just the top 15 results as
>> a bar plot. How do I plot only the top 15 groups on the x -axis. Should I
>> just extract the top 15 records and plot them or is the a better way?
>>
>>
>>
>> occup <- myDat %>%
>>
>>    group_by(CONTBR_OCCUPATION) %>%
>>
>>    summarize(count = n()) %>%
>>
>>    arrange(desc(count))
>>
>>
>>
>> Jeff
>>
>>
>>
>>
>>          [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> https://stat.ethz.ch/mailman/listinfo/r-help