[R] Labels on a pyramide

Orvalho Augusto orvaquim at gmail.com
Sat Feb 13 18:12:53 CET 2010


This is good!

Yes I must learn about dput.

Thank you
Caveman



On Sat, Feb 13, 2010 at 6:57 PM, David Winsemius <dwinsemius at comcast.net> wrote:
> I took a shot at getting "assymetric lableling but it's by no means perfect.
> You really, really ,really, should learn to offer data with dput. See below:
>
>
> On Feb 13, 2010, at 9:27 AM, Orvalho Augusto wrote:
>
>> I am using pyramid.plot() from the plotrix package.
>>
>> I have something like this
>>
>> ############################################
>> xy.pop<-dados$masfr
>> xx.pop<-dados$femfr
>> #agelabels<-dados$femlab
>> xycol<-color.gradient(c(0,0,0.5,1),c(0,0,0.5,1),c(1,1,0.5,1),11)
>> xxcol<-color.gradient(c(1,1,0.5,1),c(0.5,0.5,0.5,1),c(0.5,0.5,0.5,1),11)
>> xylab<-dados$maslab
>> xxlab<-dados$femlab
>> agelabels<-xylab
>>
>> png("piramide9808.png")
>>
>> par(mar=pyramid.plot(xy.pop,xx.pop,labels=agelabels,top.labels=c("Masculino","","Feminino"),
>>      main="Primeiras 10 cancros mais frequentes por
>> sexo...",xycol=xycol,xxcol=xxcol,gap=0, labelcex=0))
>>
>> dev.off()
>>
>> #################################
>>
>> the dados a dataframe fabircated by someother program and looks like:
>>
>> ######################
>> ordem   femlab  femfa   femfr   maslab  masfa   masfr
>>
>> 1       Colo do utero   258     26.76348548     Prostata        613
>> 43.81701215
>>
>> 2       Mama    110     11.41078838     Figado  84      6.004288778
>>
>> 3       Esofago 62      6.43153527      Pele    70      5.003573981
>>
>> 4       Figado  60      6.22406639      Sarcoma de Kaposi       65
>>  4.64617584
>>
>> 5       Pele    48      4.979253112     Esofago 63      4.503216583
>>
>> 6       Bexiga  37      3.838174274     Pulmao  46      3.288062902
>>
>> 7       Corpo do utero  34      3.526970954     Bexiga  43
>>  3.073624017
>>
>> 8       "Utero, SOE"    28      2.904564315     Penis   33
>>  2.358827734
>>
>> 9       Sarcoma de Kaposi       28      2.904564315     Laringe 27
>>  1.929949964
>>
>> 10      Vulva e Vagina  24      2.489626556     Colon   24
>>  1.715511079
>>
>> 11      Outras localizacoes     275     28.52697095     Outras
>> localizacoes     331     23.65975697
>
>
> In case anyone wants to take a crack at this without the hassle of
> recreating htis dataset...
>
> dput(dados) can be used to recreate the complete dataframe
>
> dados <- structure(list(ordem = 1:11, femlab = structure(c(2L, 6L, 4L,
> 5L, 8L, 1L, 3L, 10L, 9L, 11L, 7L), .Label = c("Bexiga", "Colo do utero",
> "Corpo do utero", "Esofago", "Figado", "Mama", "Outras localizacoes",
> "Pele", "Sarcoma de Kaposi", "Utero SOE", "Vulva e Vagina"), class =
> "factor"),
>    femfa = c(258L, 110L, 62L, 60L, 48L, 37L, 34L, 28L, 28L,
>    24L, 275L), femfr = c(26.76348548, 11.41078838, 6.43153527,
>    6.22406639, 4.979253112, 3.838174274, 3.526970954, 2.904564315,
>    2.904564315, 2.489626556, 28.52697095), maslab = structure(c(9L,
>    4L, 7L, 11L, 3L, 10L, 1L, 8L, 5L, 2L, 6L), .Label = c("Bexiga",
>    "Colon", "Esofago", "Figado", "Laringe", "Outras localizacoes",
>    "Pele", "Penis", "Prostata", "Pulmao", "Sarcoma de Kaposi"
>    ), class = "factor"), masfa = c(613L, 84L, 70L, 65L, 63L,
>    46L, 43L, 33L, 27L, 24L, 331L), masfr = c(43.81701215, 6.004288778,
>    5.003573981, 4.64617584, 4.503216583, 3.288062902, 3.073624017,
>    2.358827734, 1.929949964, 1.715511079, 23.65975697)), .Names = c("ordem",
> "femlab", "femfa", "femfr", "maslab", "masfa", "masfr"), class =
> "data.frame", row.names = c(NA,
> -11L))
>
>
>
> xy.pop<-dados$masfr
> xx.pop<-dados$femfr
> #agelabels<-paste(dados$femlab, "\t\t\t", dados$maslab, sep='')
> xycol<-color.gradient(c(0,0,0.5,1),c(0,0,0.5,1),c(1,1,0.5,1),11)
> xxcol<-color.gradient(c(1,1,0.5,1),c(0.5,0.5,0.5,1),c(0.5,0.5,0.5,1),11)
> #xylab<-dados$maslab
> #xxlab<-dados$femlab
> #agelabels<-xylab
>
>
> par(mar=pyramid.plot(xy.pop, xx.pop, labels= rep("",length(xy.pop)),
> top.labels=c("Masculino", "", "Feminino"),
>      main="Primeiras 10 cancros mais frequentes por
> sexo...", xycol=xycol,xxcol=xxcol, gap=0))
> text(-xy.pop-5*nchar(dados$maslab), 1:length(xy.pop), dados$maslab
> );text(xx.pop+7*nchar(dados$femlab), 1:length(xx.pop), dados$femlab )
>
> # Could not get the right ratio of xx.pop to nchar to get completely correct
> placement and given the  small number you might just want to put in a
> "hand-crafted" vector,
>
>>
>>
>> #####################################
>>
>> The problem is (1) I do not want plot agelabels on the center and (2)
>> I want plot different labels for each pair of the bars (one label for
>> masculine and the other feminine).
>>
>> The data represent the 10 most frequent cancer in a group of individuals.
>>
>> Can some one help please?
>>
>> Caveman
>>
>>
>>
>> --
>> OpenSource Software Consultant
>> CENFOSS (www.cenfoss.co.mz)
>> SP Tech (www.sptech.co.mz)
>> email: orvaquim at cenfoss.co.mz
>> cell: +258828810980
>>
>> ______________________________________________
>> 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
> Heritage Laboratories
> West Hartford, CT
>
>



-- 
OpenSource Software Consultant
CENFOSS (www.cenfoss.co.mz)
SP Tech (www.sptech.co.mz)
email: orvaquim at cenfoss.co.mz
cell: +258828810980



More information about the R-help mailing list