Re: Multi-Colored Filling in DateListPlot
- To: mathgroup at smc.vnet.net
- Subject: [mg104147] Re: Multi-Colored Filling in DateListPlot
- From: Armand Tamzarian <mike.honeychurch at gmail.com>
- Date: Wed, 21 Oct 2009 06:29:09 -0400 (EDT)
- References: <200910191114.HAA02303@smc.vnet.net> <hbju2s$67m$1@smc.vnet.net>
On Oct 20, 3:58 am, Mark McClure <mcmcc... at unca.edu> wrote: > On Mon, Oct 19, 2009 at 7:14 AM, jroge <jr... at mac.com> wrote: > > I am working on developing some financial reports and I have gotten > > stuck on using multiple colors in the filling of a DateListPlot. I > > would like to have the color of the filling alternate between blue and > > pink each quarter (or year depending on the plot) rather than a single > > color in the entire filling. > > How's this: > date = {2008, 1}; > duration = 16; > data = Table[FinancialData["GE", > {date, date = DatePlus[date, {1, "Month"}]}], > {duration}]; > data = Append[Append[#[[1]], #[[2, 1]]] & /@ > Partition[data, 2, 1], Last[data]]; > DateListPlot[data, Joined -> True, > Filling -> Table[i -> {Bottom, > If[EvenQ[i], RGBColor[1, 0, 0, 0.5], > RGBColor[0, 0, 1, 0.5]]}, > {i, 1, duration}]] > > The redefinition of data just makes things line up a > little nicer. You can delete that line to see what I > mean. > > Hope that helps, > Mark McClure ok here is another attempt: Clear[splitList, bandedDateListPlot]; splitList[data_List, division_String] := Module[{tmp, tmp1, tmp2}, tmp = DateString[#1, division] & /@ data[[All, 1]]; tmp1 = Accumulate[Length /@ Split[tmp]]; tmp2 = Partition[Flatten[{1, Most[tmp1] + 1, Last[tmp1]}], 2, 1] ]; bandedDateListPlot[data_List, division_String, opts : OptionsPattern[]] := Module[{divisions, newData, len}, divisions = splitList[data, division]; newData = Take[data, #] & /@ divisions; len = Length[newData]; DateListPlot[newData, Joined -> True, Filling -> Flatten[{# -> Bottom, # -> Top} & /@ Range[len], 1], FillingStyle -> Flatten[If[ OddQ[#], # -> {RGBColor[0.8784, 0.8784, 0.8784], RGBColor[0.7294, 0.788, 0.906]}, # -> {RGBColor[0.9412, 0.9412, 0.9412], RGBColor[0.2980, 0.5098, 0.7647]}] & /@ Range[len], 1], PlotStyle -> {{RGBColor[0, 0.4, 0.702], Thick}}, opts] ]; ge = FinancialData["GE", "Feb. 16, 2007"]; bandedDateListPlot[ge, "Quarter", PlotRangePadding -> 0] Mike
- References:
- Multi-Colored Filling in DateListPlot
- From: jroge <jroge@mac.com>
- Multi-Colored Filling in DateListPlot