Re: Re: graphing with dates and values
- To: mathgroup at smc.vnet.net
- Subject: [mg73138] Re: [mg73108] Re: graphing with dates and values
- From: Stern <nycstern at gmail.com>
- Date: Sun, 4 Feb 2007 07:37:23 -0500 (EST)
- References: <epv3it$96f$1@smc.vnet.net> <200702030940.EAA06059@smc.vnet.net>
The solutions offered by Dimitris and Valeri will work, but if I understand them, they don't properly handle the cases where the dates are at uneven intervals, and they will produce messy graphs if you have a lot of data. I am constantly dealing with lists that look like "freffur"'s. I'll try to sumarize a solution; ask on the list for more details if needed. 1. convert all the dates to what I call "Mathematica Integer" format (which express a date as an absolute number of seconds since the beginning of January 1,1900.) Sample code for this appears below; it converts "1/1/2000" to 3155673600. FromDate[Flatten[Append[RotateRight[ToExpression["{" <> StringReplace[" 1/1/2000", {"/" -> ","}] <> "}"], 1], {0, 0, 0}]]] You'll want to save the list of "conventionally" formatted dates for use as ticks on the x-axis, or else you'll have to convert the Mathematica Integers back. 2. Do your listplot with the Mathematica Integers as the first member of each pair (so {3155673600, 2.7} rather than {"1/1/2000",2.7}. 3. Now you need to label your x-axis. The trick here is that (a) if you have more than a few data points, you won't want to label the axis for every tick, (b) you'll want to use conventional dates ("1/1/2000") rather than the Mathematica Integers that were used in actually generating the ListPlot. The outline of one way to do this looks includes the following: a. Create an indexed list that pairs your Mathematica Integer dates with your "conventional" dates. For example, indexedlist=MapIndexed[{First[LISTOFINTEGERDATES[[#2]]], #1} &, LISTOFCONVENTIONALDATES] b. Set the ticks of your listplot with the Ticks option, Ticks -> {Table[indexedlist[[i]], {i, 1, Length[indexedlist], FREQ}], Automatic} where FREQ is how many dates to skip between ticks. In this step, it is important that the conventional dates in your list be in chronological order. There are a variety of ways to sort them if there is any risk they will be out of order. I hope that helps. I also hope this makes it to the list; for some reason, messages from my gmail account often seem not to appear. Michael On 2/3/07, Valeri Astanoff <astanoff at gmail.com> wrote: > On 2 fév, 11:25, "fredfur" <mrmillh... at yahoo.co.uk> wrote: > > Hi I have a list: > > > > {21-Mar-86, 27.5}, {20-Mar-86, 28.25}, {19-Mar-86, 28.75}, {18-Mar-86, > > 29.5} etc. > > > > how do I graph this with the dates on the x axis and the values on the > > y axis? > > > > thanks > > Good day, > > I suggest this way : > > In[1]:=data={{"21-Mar-86", 27.5}, {"20-Mar-86", 28.25}, > {"19-Mar-86", 28.75}, {"18-Mar-86", 29.5}}; > > In[2]:=ListPlot[data[[All,2]],PlotJoined -> True, > Ticks -> {Table[{i,data[[i,1]]},{i,Length[data]}],Automatic}] > > Out[2]= - Graphics - > > > V.Astanoff > >
- References:
- Re: graphing with dates and values
- From: "Valeri Astanoff" <astanoff@gmail.com>
- Re: graphing with dates and values