Hi Tom,
The problem was that the bars have width 22.5, so setting the limits
to c(0, 360) chopped off the last bar. To get around that, you needed
to add half a bar width (11.25) to the start and end limits, and then
rotate the polar coordinate system so that 0 lines up again.
ggplot(wind.data, aes(x = degree, y = time, fill = wind)) +
geom_bar(stat = "identity", aes(width = 22.5)) +
scale_x_continuous(limits = c(0 + 11.25, 360 + 11.25), breaks = c(90,
180, 270, 360)) +
coord_polar(start = 11.25 / 180 * pi) +
scale_fill_brewer(pal = "Blues")
Or now I've correctly identified the problem, we don't need to
manually set the limits:
ggplot(wind.data, aes(x = degree, y = time, fill = wind)) +
geom_bar(stat = "identity", aes(width = 22.5)) +
scale_x_continuous(breaks = c(90, 180, 270, 360)) +
coord_polar(start = 11.25 / 180 * pi) +
scale_fill_brewer(pal = "Blues")
Hadley
On Sun, Dec 6, 2009 at 7:30 PM, Thomas S. Dye <tsd at tsdye.com>
wrote:> Hi Hadley,
> I don't know if you saw the message below. ?I've worked with
> scale_continuous() a bit in the interim to see if changing the limits would
> bring back the 16th bar, but without success. ?If I don't add in
> scale_continuous(), then the 16th bar is shown.
> Is this a ggplot2 bug?
> I apologize for my persistence?on?this, but I'm working under a project
>
deadline.??I'm?captivated?by?the?grammar?of?graphics?and?would?like?to?produce
> all my graphs with ggplot2. ?If there is a bug that swallows the 16th bar,
> though, then I'll make my wind rose with another package and wait
patiently
> until ggplot2 plots the full compass.
> Thanks again for a terrific software package.
> All the best,
> Tom
> Begin forwarded message:
>
> From: "Thomas S. Dye" <tsd at tsdye.com>
> Date: December 3, 2009 9:42:27 PM HST
> To: hadley wickham <h.wickham at gmail.com>
> Cc: "r-help at r-project.org" <r-help at r-project.org>
> Subject: Re: [R] [ggplot2] Wind rose orientation
> Hi Hadley,
>
> That solved a lot of problems. ?Thanks!
>
> Do you get a vertically oriented bar? ?Here I get 15 bars with a space
where
> the north bar, the 16th bar, should be.
>
> All the best,
> Tom
>
> On Dec 3, 2009, at 8:16 PM, hadley wickham wrote:
>
> Hi Thomas,
>
> Ok, the key thing that you were missing was:
>
> scale_x_continuous(limits = c(0, 360))
>
> Since you don't have any data at 0, and because ggplot2 doesn't
know
>
> that your variable had intrinsic meaning as a degree, it was starting
>
> zero degrees at 22.5.
>
> A few other tweaks below:
>
> wind.data$wind <- factor(wind.data$wind,
>
> c("calm", "< 3", "4 - 12", "13 -
24", "> 25"))
>
> ggplot(wind.data, aes(x = degree, y = time, fill = wind)) +
>
> xlab(NULL) + ylab(NULL) +
>
> geom_bar(stat = "identity", aes(width = 22.5)) +
>
> scale_x_continuous(limits = c(0, 360), breaks = c(0, 90, 180, 270)) +
>
> coord_polar() +
>
> scale_fill_brewer(pal = "Blues")
>
> Regards,
>
> Hadley
>
> On Fri, Dec 4, 2009 at 12:02 AM, Thomas S. Dye <tsd at tsdye.com>
wrote:
>
> Aloha Hadley,
>
> Thanks very much for ggplot. ?It's a terrific piece of work.
?Specifying
>
> width = 1 in the call to geom_bar didn't change the orientation of the
>
> coordinates. ?If you run the example, you'll see that 100 is
horizontal,
>
> where 90 would be on the compass.
>
> Here is a reproducible example. ?The data are shown here as the results of
>
> evaluating the read-data source code block, displayed as an Org-mode table.
>
> A csv file is also attached (if it makes it through the list).
>
> #+srcname: read-data
>
> #+begin_src R :session
>
> wind.data <- read.csv("pmrf_windrose_info_new.csv")
>
> #+end_src
>
> #+resname: read-data
>
> | "E" ??| ???90 | 4.9 | "calm" ???|
>
> | "ENE" | ?67.5 | 4.9 | "calm" ???|
>
> | "NE" ?| ???45 | 4.9 | "calm" ???|
>
> | "NNE" | ?22.5 | 4.9 | "calm" ???|
>
> | "N" ??| ??360 | 4.9 | "calm" ???|
>
> | "NNW" | 337.5 | 4.9 | "calm" ???|
>
> | "NW" ?| ??315 | 4.9 | "calm" ???|
>
> | "WNW" | 292.5 | 4.9 | "calm" ???|
>
> | "W" ??| ??270 | 4.9 | "calm" ???|
>
> | "WSW" | 247.5 | 4.9 | "calm" ???|
>
> | "SW" ?| ??225 | 4.9 | "calm" ???|
>
> | "SSW" | 202.5 | 4.9 | "calm" ???|
>
> | "S" ??| ??180 | 4.9 | "calm" ???|
>
> | "SSE" | 157.5 | 4.9 | "calm" ???|
>
> | "SE" ?| ??135 | 4.9 | "calm" ???|
>
> | "ESE" | 112.5 | 4.9 | "calm" ???|
>
> | "" ???| ???90 | ??9 | "< 3" ????|
>
> | "" ???| ?67.5 | ??3 | "< 3" ????|
>
> | "" ???| ???45 | ??3 | "< 3" ????|
>
> | "" ???| ?22.5 | ??1 | "< 3" ????|
>
> | "" ???| ??360 | ??1 | "< 3" ????|
>
> | "" ???| 337.5 | 0.5 | "< 3" ????|
>
> | "" ???| ??315 | ??1 | "< 3" ????|
>
> | "" ???| 292.5 | 0.5 | "< 3" ????|
>
> | "" ???| ??270 | ??1 | "< 3" ????|
>
> | "" ???| 247.5 | 0.5 | "< 3" ????|
>
> | "" ???| ??225 | 0.5 | "< 3" ????|
>
> | "" ???| 202.5 | 0.5 | "< 3" ????|
>
> | "" ???| ??180 | ??1 | "< 3" ????|
>
> | "" ???| 157.5 | 0.5 | "< 3" ????|
>
> | "" ???| ??135 | ??3 | "< 3" ????|
>
> | "" ???| 112.5 | ??2 | "< 3" ????|
>
> | "" ???| ???90 | ??6 | "4 - 12" ?|
>
> | "" ???| ?67.5 | ??4 | "4 - 12" ?|
>
> | "" ???| ???45 | ??5 | "4 - 12" ?|
>
> | "" ???| ?22.5 | ??2 | "4 - 12" ?|
>
> | "" ???| ??360 | ??5 | "4 - 12" ?|
>
> | "" ???| 337.5 | ??4 | "4 - 12" ?|
>
> | "" ???| ??315 | ??7 | "4 - 12" ?|
>
> | "" ???| 292.5 | ??4 | "4 - 12" ?|
>
> | "" ???| ??270 | ??6 | "4 - 12" ?|
>
> | "" ???| 247.5 | ??2 | "4 - 12" ?|
>
> | "" ???| ??225 | ??4 | "4 - 12" ?|
>
> | "" ???| 202.5 | 1.5 | "4 - 12" ?|
>
> | "" ???| ??180 | 1.5 | "4 - 12" ?|
>
> | "" ???| 157.5 | 1.5 | "4 - 12" ?|
>
> | "" ???| ??135 | ??5 | "4 - 12" ?|
>
> | "" ???| 112.5 | 2.5 | "4 - 12" ?|
>
> | "" ???| ???90 | ??0 | "13 - 24" |
>
> | "" ???| ?67.5 | ??0 | "13 - 24" |
>
> | "" ???| ???45 | ??0 | "13 - 24" |
>
> | "" ???| ?22.5 | ??0 | "13 - 24" |
>
> | "" ???| ??360 | ??1 | "13 - 24" |
>
> | "" ???| 337.5 | 0.5 | "13 - 24" |
>
> | "" ???| ??315 | 0.5 | "13 - 24" |
>
> | "" ???| 292.5 | ??1 | "13 - 24" |
>
> | "" ???| ??270 | ??1 | "13 - 24" |
>
> | "" ???| 247.5 | ??0 | "13 - 24" |
>
> | "" ???| ??225 | ??0 | "13 - 24" |
>
> | "" ???| 202.5 | ??0 | "13 - 24" |
>
> | "" ???| ??180 | 0.5 | "13 - 24" |
>
> | "" ???| 157.5 | 0.5 | "13 - 24" |
>
> | "" ???| ??135 | ??1 | "13 - 24" |
>
> | "" ???| 112.5 | ??0 | "13 - 24" |
>
> | "" ???| ???90 | ??0 | "> 25" ???|
>
> | "" ???| ?67.5 | ??0 | "> 25" ???|
>
> | "" ???| ???45 | ??0 | "> 25" ???|
>
> | "" ???| ?22.5 | ??0 | "> 25" ???|
>
> | "" ???| ??360 | ??0 | "> 25" ???|
>
> | "" ???| 337.5 | ??0 | "> 25" ???|
>
> | "" ???| ??315 | ??0 | "> 25" ???|
>
> | "" ???| 292.5 | ??0 | "> 25" ???|
>
> | "" ???| ??270 | ??0 | "> 25" ???|
>
> | "" ???| 247.5 | ??0 | "> 25" ???|
>
> | "" ???| ??225 | ??0 | "> 25" ???|
>
> | "" ???| 202.5 | ??0 | "> 25" ???|
>
> | "" ???| ??180 | ??0 | "> 25" ???|
>
> | "" ???| 157.5 | ??0 | "> 25" ???|
>
> | "" ???| ??135 | ??0 | "> 25" ???|
>
> | "" ???| 112.5 | ??0 | "> 25" ???|
>
>
> #+begin_src R :session
>
> library(ggplot2)
>
> <<read-data>>
>
> wind <- ggplot(wind.data, aes(x = degree, y = time, fill = wind,
>
> xlab(NULL), ylab(NULL)))
>
> wind.bar <- wind + geom_bar(stat = "identity", width = 1)
>
> wind.bar + coord_polar()
>
> #+end_src
>
> All the best,
>
> Tom
>
>
>
> On Dec 3, 2009, at 4:35 PM, hadley wickham wrote:
>
> Hi Thomas,
>
> I suspect you want ?geom_bar(stat = "identity", width = 1), but
it's
>
> hard to be sure without a reproducible example.
>
> Hadley
>
> On Thu, Dec 3, 2009 at 8:18 PM, Thomas S. Dye <tsd at tsdye.com>
wrote:
>
> Aloha all,
>
> I love using ggplot. ?It took a while to get used to the grammar of
>
> graphics, but it is starting to get easy now that I am thinking in a
>
> more structured way.
>
> A question. ?I'm making a wind rose that I'd like to be oriented
with
>
> due north straight up. ?I've discovered that the orientation is
>
> sensitive to how north is represented. ?When north is represented as
>
> 0, the orientation looks to be shifted just a bit counter-clockwise,
>
> perhaps 10 degrees. ?When north is represented as 360, the plot is
>
> shifted clockwise, but past the point where north is straight up. ?How
>
> to get north straight up?
>
> I've read the book (very nice) and have skimmed through the
>
> documentation without finding what I need. ?Any help much appreciated.
>
> Here is the code from my Org-babel session:
>
> #+begin_src R :session
>
> library(ggplot2)
>
> wind.data <- read.csv("pmrf_windrose_info_new.csv")
>
> wind <- ggplot(wind.data, aes(x = degree, y = time, fill = wind))
>
> wind.bar <- wind + geom_bar(stat = "identity")
>
> wind.bar + coord_polar()
>
> #+end_src
>
> All the best,
>
> Tom
>
> Thomas S. Dye, Ph.D.
>
> T. S. Dye & Colleagues, Archaeologists, Inc.
>
> Phone: (808) 529-0866 Fax: (808) 529-0884
>
> http://www.tsdye.com
>
>
>
> ?????[[alternative HTML version deleted]]
>
> ______________________________________________
>
> 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.
>
>
>
>
> --
>
> http://had.co.nz/
>
>
>
>
>
>
> --
>
> http://had.co.nz/
>
> ______________________________________________
> 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.
>
>
>
> Thomas S. Dye, Ph.D.
>
> T. S. Dye & Colleagues, Archaeologists, Inc.
>
> Phone: (808) 529-0866 Fax: (808) 529-0884
>
> http://www.tsdye.com
>
>
--
http://had.co.nz/