Message Boards Message Boards

0
|
12957 Views
|
3 Replies
|
0 Total Likes
View groups...
Share
Share this post:

How to get chart of daylight hours?

Posted 9 years ago

Hello all,

I'm new at using the Wolfram Alpha site, and am hoping to use it for some data about solar power. I was hoping it could give me a table of daylight hours per month via "total daylight hours per month in New Haven, Connecticut for 2014," but my various attempts at wording have not given me anything closer than today's daylight hours in New York City! Wolfram seems to focus on one part of the query or another, eg. only showing me the "day night terminator" or only showing me info about my town, and not combining the elements together.

I feel like I'm missing something simple, any tips will be much appreciated.

thanks!

POSTED BY: Yary H
3 Replies

As promised:

(*Get data*)
sunset = Sunset[Entity["City", {"NewHaven", "Connecticut", "UnitedStates"}], DateRange[{2015, 1, 1}, {2015, 12, 31}]];
sunrise = Sunrise[Entity["City", {"NewHaven", "Connecticut", "UnitedStates"}],DateRange[{2015, 1, 1}, {2015, 12, 31}]];
month = DateString[#, "MonthName"] & /@ DateRange[{2015, 1, 1}, {2015, 12, 31}];

(*Plot*)
listclean = 24. Mod[#, 1] & /@ QuantityMagnitude@(DateDifference[#[[1]], #[[2]]] & /@ Transpose[{DateString /@ sunrise["Values"],DateString /@ sunset["Values"]}]);

We can now get the total number of daylight hours by:

Total /@ GatherBy[Transpose[{month, listclean}], #[[1]] &][[All, All, 2]]
(*{297.233, 297.667, 370.167, 399.417, 449.15, 453.067, 459.567, 428.1, \
374.583, 343.983, 296.567, 286.883}*)

which give the following plot

ListLinePlot[Total /@ GatherBy[Transpose[{month, listclean}], #[[1]] &][[All, All,2]], PlotMarkers -> {Automatic, 10}, 
 Ticks -> {Transpose[{Range[12], Rotate[#, Pi/2] & /@ GatherBy[Tally@month, #[[1]] &][[All, 1, 1]]}], All}, 
 LabelStyle -> Directive[Bold, Medium]]

enter image description here

This is much faster, does not lead to time outs, so that the results are more reliable and it probably eats up fewer of your cloud credits/API requests.

Cheers,

M.

PS: Note that the Rotate command does not work in the cloud. The rest works just fine. This here should work though:

ListLinePlot[Total /@ GatherBy[Transpose[{month, listclean}], #[[1]] &][[All, All,2]], PlotMarkers -> {Automatic, 10},
Ticks -> {Transpose[{Range[12],DateString[#, "MonthNameShort"] & /@GatherBy[Tally@month, #[[1]] &][[All, 1, 1]]}], All},
LabelStyle -> Directive[Bold, Medium], ImageSize -> Large]
POSTED BY: Marco Thiel

Ok, sorry, I noticed that computationally that is one of the stupidest things to do. I'll post a better (much faster) solution later.

Cheers, Marco

POSTED BY: Marco Thiel
POSTED BY: Marco Thiel
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard

Group Abstract Group Abstract