Dear fellow R users,

 

I would like to draw a "sunflowerplot" because I have data (decade by
month) that plots multiple times on the same x-y co-ordinates. Further I
would like to colour each of the points/sunflower leaves on the plot
according to the group they belong to (i.e. which type of event each
represents within that decade and month). I thought that this would be
relatively straight forward - I have a series of x and y co-ords and a
colour associated with each and I just use the column with the colours
in it to colour-code the points using col = column.name when calling the
plot. 

 

However, the sunflower plot uses the function "xy.coords" to calculate
the number of times that multiple points are plotted at the same
coordinates and in so doing creates a new dataset (x.coords, y.coords
and the number of times each is repeated) and this dataset no longer has
the colours associated with the individual points. The colours in a
resultant plot merely plot in the original order.

 

I would like to know whether there is a way of associating the correct
colours with individual points that are now represented by the xy.coords
output.

 

If you are interested in this example, an example of the code that I
have been using and the input data used can be found at the end of this
message.

 

Many thanks in advance for your input!

 

Best wishes,

 

Nicola

 

Code: 
For sunflowerplot

par(las = 1)

sunflowerplot(extremes.decade$Decade, extremes.decade$Month, col =
extremes.decade$Extreme, 

  cex = 1.2, xlab = "Decade", ylab = "Month", axes = F , pch = 16,
seg.col = extremes.decade$Extreme, 

  size = 0.2, seg.lwd =2)  

axis(side = 1, at = c(6:11), labels =
c("","1960s","1970s","1980s","1990s","2000s"), tick = TRUE, line = NA)

axis(side = 2, at = c(0:12), labels =
c("","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","
Dec"), tick = TRUE, line = NA)

legend(7, 12.5, legend = c("Grp1"," Grp2"," Grp3"," Grp4"," Grp5","
Grp6"," Grp7"," Grp8"), 

  col =
c("blue","brown","orange","green","red","lightblue","purple","pink"),
pch = 19, bty = "n")  

 

For comparison of where colours should lie - normal plot:

#add random number to make all points different so that they dont
overplot

a <- runif(109,1,1.001)

extremes.decade$Year.a <- a*extremes.decade$Year

 

plot(extremes.decade$Year.a, extremes.decade$Month, col =
extremes.decade$Extreme, 

  cex = 1.2, xlab = "Decade", ylab = "Month", yaxt ="n" , pch = 16)  

#axis(side = 1, at = c(6:11), labels =
c("","1960s","1970s","1980s","1990s","2000s"), tick = TRUE, line = NA)

axis(side = 2, at = c(0:12), labels =
c("","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","
Dec"), tick = TRUE, line = NA)

legend(1950, 12.5, legend = c("Grp1"," Grp2"," Grp3"," Grp4"," Grp5","
Grp6"," Grp7"," Grp8"),

  col =
c("blue","brown","orange","green","red","lightblue","purple","pink"),
pch = 19, bty = "n")  

 

 

 

Data: 

Decade

Year

Month

Extreme

7

1968

1

brown

7

1966

2

green

7

1966

2

lightblue

7

1968

2

green

7

1963

3

lightblue

7

1966

4

green

7

1961

5

lightblue

7

1967

5

blue

7

1964

6

blue

7

1965

6

green

7

1968

6

blue

7

1968

6

lightblue

7

1965

7

orange

7

1963

9

red

7

1964

9

lightblue

7

1968

9

blue

7

1961

10

green

7

1966

10

brown

7

1965

12

green

8

1973

1

brown

8

1976

1

red

8

1977

1

brown

8

1977

2

blue

8

1977

2

orange

8

1974

3

blue

8

1970

4

brown

8

1974

4

brown

8

1975

4

brown

8

1975

5

green

8

1973

6

red

8

1979

7

blue

8

1979

8

blue

8

1974

9

lightblue

8

1979

9

green

8

1974

10

brown

8

1975

10

green

8

1976

10

blue

8

1976

11

green

8

1970

12

lightblue

8

1975

12

lightblue

9

1980

1

pink

9

1982

1

pink

9

1980

2

pink

9

1986

2

pink

9

1981

3

green

9

1982

5

green

9

1987

5

red

9

1985

6

pink

9

1980

7

red

9

1983

7

blue

9

1980

8

pink

9

1981

8

lightblue

9

1985

8

red

9

1981

9

green

9

1982

9

pink

9

1985

10

orange

9

1987

10

brown

9

1983

11

pink

10

1990

1

red

10

1999

1

brown

10

1997

2

brown

10

1999

2

brown

10

1999

3

orange

10

1991

4

brown

10

1991

4

red

10

1997

4

lightblue

10

1997

6

blue

10

1997

6

lightblue

10

1994

7

green

10

1996

7

lightblue

10

1999

7

orange

10

1993

9

blue

10

1994

10

pink

10

1997

10

red

10

1994

11

brown

10

1996

11

blue

10

1996

11

lightblue

10

1993

12

blue

10

1997

12

purple

11

2004

1

orange

11

2001

2

brown

11

2006

2

orange

11

2006

2

red

11

2000

3

lightblue

11

2000

3

orange

11

2002

3

red

11

2004

3

purple

11

2003

4

orange

11

2004

4

purple

11

2001

5

purple

11

2003

5

purple

11

2002

7

purple

11

2005

7

red

11

2002

8

blue

11

2002

8

orange

11

2002

8

purple

11

2006

8

blue

11

2001

10

orange

11

2002

10

brown

11

2002

10

purple

11

2005

10

red

11

2002

11

purple

11

2004

11

orange

11

2004

11

red

11

2002

12

orange

11

2004

12

orange

 

--------------------------------------------------------------------------------
This e-mail communication and any attachments are confidential and are intended 
only for the individual(s) or entity named above and others who have been 
specifically authorized to receive it. If you are not the intended recipient, 
please do not copy, use or disclose the contents of this communication to others. 
Please notify the sender that you have received this email in error by replying 
to the e-mail or by telephoning the sender. Please then delete the e-mail and 
any copies of it. This information may contain private, confidential or 
privileged material. 
Thank you. 
--------------------------------------------------------------------------------
	[[alternative HTML version deleted]]

