I have a table that consists of the following country codes and frequencies: AE AN AR AT AU BB BD BE BH BM BN BO BR BS CA CH CM CN CO CR CY DE DK DO EC ES 0 3 0 2 1 31 4 1 1 1 45 1 1 4 5 86 3 1 8 1 2 1 8 2 1 2 4 FI FR GB GR GU HK ID IE IL IN IO IT JM JP KH KR KY LU LV MO MX MY NG NL NO NZ PA 2 4 35 3 3 14 3 5 2 5 1 2 1 15 1 11 2 2 1 1 23 7 1 6 1 3 1 PE PG PH PR PT RO RU SA SE SG TC TH TT TW TZ US ZA 2 1 1 8 1 1 1 1 1 18 1 1 2 11 1 0 3 I am executing: non_us <- table(subset(mydf, (COUNTRY %in% validcountries) & COUNTRY !"US", select = COUNTRY)) barplot(non_us,horiz=TRUE,xlab = "Count", ylab = "Country",main= "Count of Non-US Records by Country",col="red") It creates the attached image (I hope images come through on email). Notice that it is not displaying all of the country codes. It shows bars for each country, but only 6 are appearing. Does anyone have a suggestion? I'm open to using qplot, ggplot or ggplot2 (and have tried that), but I want a bar (horizontal) chart not a column chart. Thanks in advance. -- Jeff
On 01/14/2014 06:15 AM, Jeff Johnson wrote:> I have a table that consists of the following country codes and frequencies: > AE AN AR AT AU BB BD BE BH BM BN BO BR BS CA CH CM CN CO CR CY DE DK DO > EC ES > 0 3 0 2 1 31 4 1 1 1 45 1 1 4 5 86 3 1 8 1 2 1 8 2 1 > 2 4 > FI FR GB GR GU HK ID IE IL IN IO IT JM JP KH KR KY LU LV MO MX MY NG NL NO > NZ PA > 2 4 35 3 3 14 3 5 2 5 1 2 1 15 1 11 2 2 1 1 23 7 1 6 1 > 3 1 > PE PG PH PR PT RO RU SA SE SG TC TH TT TW TZ US ZA > 2 1 1 8 1 1 1 1 1 18 1 1 2 11 1 0 3 > > I am executing: > non_us<- table(subset(mydf, (COUNTRY %in% validcountries)& COUNTRY !> "US", select = COUNTRY)) > > barplot(non_us,horiz=TRUE,xlab = "Count", ylab = "Country",main= "Count of > Non-US Records by Country",col="red") > > It creates the attached image (I hope images come through on email). Notice > that it is not displaying all of the country codes. It shows bars for each > country, but only 6 are appearing. > > Does anyone have a suggestion? I'm open to using qplot, ggplot or ggplot2 > (and have tried that), but I want a bar (horizontal) chart not a column > chart. >Hi Jeff, We didn't get the image, and I don't know what "validcountries" contains, but this may be close to what you want: URLcodes<-c("AE","AN","AR","AT","AU","BB","BD","BE","BH","BM", "BN","BO","BR", "BS","CA","CH","CM","CN","CO","CR","CY","DE","DK","DO","EC", "ES,FI","FR", "GB","GR","GU","HK","ID","IE","IL","IN","IO","IT","JM","JP", "KH","KR","KY", "LU","LV","MO","MX","MY","NG","NL","NO","NZ","PA","PE","PG", "PH","PR","PT", "RO","RU","SA","SE","SG","TC","TH","TT","TW","TZ","US","ZA") values<-c(0,3,0,2,1,31,4,1,1,1,45,1,1,4,5,86,3,1,8,1,2,1,8,2,12,4, 2,4,35,3,3,14,3,5,2,5,1,2,1,15,1,11,2,2,1,1,23,7,1,6,1,3,12, 1,1,8,1,1,1,1,1,18,1,1,2,11,1,0,3) noUS<-URLcodes!="US" barpos<-barplot(values[noUS],horiz=TRUE) require(plotrix) staxlab(2,at=barpos,labels=URLcodes[noUS],nlines=3) Jim
I am not sure that I got the data correctly--it is much better to supply sample
data using dput(). See ?dput for more information but I think something like
this will work
dat1 / <- structure(list(cty = structure(1:70, .Label = c("AE",
"AN", "AR",
"AT", "AU", "BB", "BD", "BE",
"BH", "BM", "BN", "BO", "BR",
"BS",
"CA", "CH", "CM", "CN", "CO",
"CR", "CY", "DE", "DK", "DO",
"EC",
"ES", "FI", "FR", "GB", "GR",
"GU", "HK", "ID", "IE", "IL",
"IN",
"IO", "IT", "JM", "JP", "KH",
"KR", "KY", "LU", "LV", "MO",
"MX",
"MY", "NG", "NL", "NO", "NZ",
"PA", "PE", "PG", "PH", "PR",
"PT",
"RO", "RU", "SA", "SE", "SG",
"TC", "TH", "TT", "TW", "TZ",
"US",
"ZA"), class = "factor"), val = c(0, 3, 0, 2, 1, 31, 4, 1,
1,
1, 45, 1, 1, 4, 5, 86, 3, 1, 8, 1, 2, 1, 8, 2, 1, 2, 4, 2, 4,
35, 3, 3, 14, 3, 5, 2, 5, 1, 2, 1, 15, 1, 11, 2, 2, 1, 1, 23,
7, 1, 6, 1, 3, 1, 2, 1, 1, 8, 1, 1, 1, 1, 1, 18, 1, 1, 2, 11,
1, 0)), .Names = c("cty", "val"), row.names = c(NA, -70L),
class = "data.frame")
library(ggplot2)
ggplot(dat1, aes(cty, val))+ geom_bar(stat = "identity", colour =
"red") + coord_flip()
It will take some cleaning up using theme() but I think it supplies the
essentials that you want.
John Kane
Kingston ON Canada
> -----Original Message-----
> From: mrjefftoyou at gmail.com
> Sent: Mon, 13 Jan 2014 11:15:46 -0800
> To: r-help at r-project.org
> Subject: [R] Barplot not showing all labels
>
> I have a table that consists of the following country codes and
> frequencies:
> AE AN AR AT AU BB BD BE BH BM BN BO BR BS CA CH CM CN CO CR CY DE DK
> DO
> EC ES
> 0 3 0 2 1 31 4 1 1 1 45 1 1 4 5 86 3 1 8 1 2 1 8 2
> 1
> 2 4
> FI FR GB GR GU HK ID IE IL IN IO IT JM JP KH KR KY LU LV MO MX MY NG NL
> NO
> NZ PA
> 2 4 35 3 3 14 3 5 2 5 1 2 1 15 1 11 2 2 1 1 23 7 1 6
> 1
> 3 1
> PE PG PH PR PT RO RU SA SE SG TC TH TT TW TZ US ZA
> 2 1 1 8 1 1 1 1 1 18 1 1 2 11 1 0 3
>
> I am executing:
> non_us <- table(subset(mydf, (COUNTRY %in% validcountries) & COUNTRY
!> "US", select = COUNTRY))
>
> barplot(non_us,horiz=TRUE,xlab = "Count", ylab =
"Country",main= "Count
> of
> Non-US Records by Country",col="red")
>
> It creates the attached image (I hope images come through on email).
> Notice
> that it is not displaying all of the country codes. It shows bars for
> each
> country, but only 6 are appearing.
>
> Does anyone have a suggestion? I'm open to using qplot, ggplot or
ggplot2
> (and have tried that), but I want a bar (horizontal) chart not a column
> chart.
>
> Thanks in advance.
>
> --
> Jeff
> ______________________________________________
> 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.
____________________________________________________________
FREE 3D MARINE AQUARIUM SCREENSAVER - Watch dolphins, sharks & orcas on your
desktop!