From: M.Roellig on
On 6 Jun., 12:41, Dan Loewenherz <dloewenh...(a)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

Hi Dan,

one problem is the size scaling of your PointSize, which produces very
big points.
But the main problem is that providing a list of PlotMarkers means
using one
list element per list of data points, i.e. when you provide one list
of data points
you will only use the first element of the PlotMarkers list. See the
documentation
for a respective example. As I mentioned in a recent post, I would
like the default
behavior to automatically use all elements of a list of PlotMarkers
even if only
one list of data points was provided.
A work around is to split your list of n points into n lists of one
point:

Points = Map[
Graphics[{PointSize[Log10[#/100 + 0.001]], Point[{0, 0}]}] &,
HourlyDataPointCount];

DateListPlot[Partition[Transpose[{Hours, HourlyAverageCost}], 1],
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]


I also changed your point size scaling a little.

Best, Markus

First  |  Prev  | 
Pages: 1 2
Prev: Push to clipboard?
Next: Assumptions, Abs, etc.