Re: PlotMarkers and DateListPlot
- To: mathgroup at smc.vnet.net
- Subject: [mg110192] Re: PlotMarkers and DateListPlot
- From: Bob Hanlon <hanlonr at cox.net>
- Date: Mon, 7 Jun 2010 08:07:06 -0400 (EDT)
If you want each point to have its own style then each point must be a separate list, i.e., Map List onto the data. HourlyAverageCost = { 186.8, 153.3, 148.3, 147.7, 148.1, 147.3, 142.7, 141.4, 152.8, 151.3, 153.0, 153.1, 163.8, 184.7, 177.3, 140.6, 215.3, 149.9, 138.6, 94.0, 0, 140.1, 142.4}; HourlyDataPointCount = { 17, 101, 109, 189, 159, 160, 231, 494, 375, 384, 242, 187, 165, 219, 158, 69, 11, 31, 8, 1, 0, 16, 52}; Hours = Map[ DateString[{2010, 1, 1, #, 0, 0}] &, Array[# &, 23]]; Points = Map[Graphics[ {AbsolutePointSize[#/18 + 1], Point[{0, 0}]}] &, HourlyDataPointCount]; DateListPlot[ List /@ Transpose[{Hours, HourlyAverageCost}], ImageSize -> 600, LabelStyle -> Directive[ FontFamily -> "Helvetica", "Medium"], DateTicksFormat -> {"HourShort", " ", "AMPM"}, PlotStyle -> Black, Frame -> False, PlotRange -> {Automatic, {0, 350}}, PlotMarkers -> Points] Or just using PlotStyle rather than PlotMarkers DateListPlot[ List /@ Transpose[{Hours, HourlyAverageCost}], ImageSize -> 600, LabelStyle -> Directive[ FontFamily -> "Helvetica", "Medium"], DateTicksFormat -> {"HourShort", " ", "AMPM"}, PlotStyle -> (Directive[Black, AbsolutePointSize[#]] & /@ (28*Rescale[HourlyDataPointCount] + 1)), Frame -> False, PlotRange -> {Automatic, {0, 350}}] Bob Hanlon ---- Dan Loewenherz <dloewenherz at gmail.com> wrote: ============= Hi all, I'm trying to use some Graphics elements as markers for data points in my DateListPlot. I'm running into an issue where the first element of the PlotMarker list is being superimposed on every point in the plot. Here is the code which returns similarly undesired behavior. Instead of letters, I'm using points. Nonetheless, the problem is the same. The desired behavior is for the points to scale to the values of HourlyDataPointCount. --------8<-------- HourlyAverageCost = {186.8235294117647, 153.28722772277229, 148.25412844036697, 147.67576719576721, 148.1043396226415, 147.34375, 142.72424242424245, 141.44635627530366, 152.81413333333333, 151.30989583333334, 153.04958677685951, 153.12459893048128, 163.7921212121212, 184.74429223744292, 177.25316455696202, 140.55072463768116, 215.27272727272728, 149.90322580645162, 138.625, 94.0, 0, 140.0625, 142.44230769230768}; HourlyDataPointCount = {17, 101, 109, 189, 159, 160, 231, 494, 375, 384, 242, 187, 165, 219, 158, 69, 11, 31, 8, 1, 0, 16, 52}; Hours = Map[DateString[{2010, 1, 1, #, 0, 0}] &, Array[# &, 23]]; Points = Map[ Graphics[{PointSize[Log[#/10 + 0.001]], Point[{0, 0}]}] &, HourlyDataPointCount] DateListPlot[Transpose[{Hours, HourlyAverageCost}], ImageSize -> 600, LabelStyle -> Directive[FontFamily -> "Helvetica", "Medium"], DateTicksFormat -> {"HourShort", " ", "AMPM"}, PlotStyle -> {{Thick, RGBColor[0, 0, 0]}}, Joined -> True, Frame -> False, PlotRange -> {Automatic, {0, 350}}, PlotMarkers -> Points] -------->8-------- Thanks in advance, Dan