MathGroup Archive 2010

[Date Index] [Thread Index] [Author Index]

Search the Archive

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




  • Prev by Date: Re: PlotMarkers and DateListPlot
  • Next by Date: Re: PlotMarkers and DateListPlot
  • Previous by thread: Re: PlotMarkers and DateListPlot
  • Next by thread: Re: PlotMarkers and DateListPlot