MathGroup Archive 2010

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

Search the Archive

Re: PlotMarkers and DateListPlot

  • To: mathgroup at smc.vnet.net
  • Subject: [mg110196] Re: PlotMarkers and DateListPlot
  • From: "David Park" <djmpark at comcast.net>
  • Date: Mon, 7 Jun 2010 08:07:50 -0400 (EDT)

The problem is that a single PlotMarker is being used for each data set and
you are plotting only one basic data set. The solution is to add the disks
as extra items in the plot. Although this can probably be done with regular
Mathematica, perhaps using Prolog, I find it easiest to use the
Presentations package that is designed in part to more easily make custom
graphics.

Needs["Presentations`Master`"] 

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]]; 

point[i_] :=
 Module[
  {t = AbsoluteTime[{2010, 1, 1, i, 0}],
   y = Part[HourlyAverageCost, i],
   count = Part[HourlyDataPointCount, i],
   maxcount = Max[HourlyDataPointCount], radius},
  radius = 20.0 Sqrt[count/maxcount];
  Tooltip[{AbsoluteThickness[1], 
    If[radius > 1, CirclePoint[{t, y}, radius, Black, Orange],
     CirclePoint[{t, y}, 4, Black, White]],
    Black, AbsolutePointSize[3],
    Point[{t, y}]}, count]
  ] 

dateticks = 
  CustomDateTicks[{DateString[{2010, 1, 1, 0, 0}], 
    DateString[{2010, 1, 1, 23, 0}], {3, "Hour"}, 3}, 
   DateString[#, {"Hour12Short", " ", "AMPM"}] &];
Draw2D[
 {Table[point[i], {i, 1, 23}],
  AbsoluteThickness[1],
  DateListDraw[Transpose[{Hours, HourlyAverageCost}],
   Joined -> True, PlotRange -> All]
  },
 AspectRatio -> .3,
 PlotRange -> {-10, 250},
 Frame -> True,
 FrameLabel -> {"Time of Day", "Average Cost"},
 FrameTicks -> {{Automatic, Automatic}, {dateticks, 
    dateticks // NoTickLabels}},
 PlotLabel -> "Example of a Weighted DateListPlot",
 ImageSize -> 400] 


Peter Lindsay at the School of Mathematics and Statistics at the University
of St Andrews [ http://www.mcs.st-and.ac.uk/ ] kindly helps me keep an
archive of Presentation solutions to MathGroup questions. These are
available in both notebook and PDF form at:

http://blackbook.mcs.st-and.ac.uk/~Peter/djmpark/html/ 

This should appear there within a day or two as Weighted DateListPlot.


David Park
djmpark at comcast.net
http://home.comcast.net/~djmpark/  


From: Dan Loewenherz [mailto:dloewenherz at gmail.com] 

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: Lists: Row Vectors vs. Column Vectors. (feels like such a silly
  • Previous by thread: Re: PlotMarkers and DateListPlot
  • Next by thread: Re: Lists: Row Vectors vs. Column Vectors. (feels like such a silly