Re: Data Plotting With Less Typing
- To: mathgroup at smc.vnet.net
- Subject: [mg45335] Re: Data Plotting With Less Typing
- From: drbob at bigfoot.com (Bobby R. Treat)
- Date: Wed, 31 Dec 2003 03:23:41 -0500 (EST)
- References: <bsrho9$qio$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Try this: parse[d : {__?AtomQ}] := {Thread[ToExpression@data[[1]] -> d]} parse[expr_] := Flatten[expr /. parse /@ data] select[expr_] := Flatten@Position[parse@expr, True] extract[expr_, test_] := parse[expr][[select[test]]] Here's some data: data = {{"a", "b", "c1", "c2", "d"}, {1.64657, 3.11775, 4.4374, 8.93891, 1.19198}, {5.5366, 3.5689, 1.32583, 2.6293, 2.38973}, {9.03042, 9.87567, 4.34064, 8.09357, 3.44279}, {5.43228, 4.7836, 8.12985, 3.94991, 2.15411}}; Here are a couple of ways to select from the data: parse[Sin[a/b]+c1][[select[d<c2]]] {4.94132,2.32564,5.13284,9.03664} extract[Sin[a/b]+c1,d<c2] {4.94132,2.32564,5.13284,9.03664} and here are a couple of plots: ListPlot[extract[Sin[a/b] + c1, d < c1], PlotJoined -> True] Histogram[extract[Sin[a/b] + c1, d < c1]] Bobby Steve Eichblatt <steveeichblatt at yahoo.com> wrote in message news:<bsrho9$qio$1 at smc.vnet.net>... > Hi, > > I am fairly new to Mathematica, and brand new to newsgroups. > > I love alot of the features of Mathematica, but some features seem > sorely missing, and I wonder if i am just not finding them. > > In particular, for plotting data there seems to be too much typing > involved. I have a data table that is imported from a CSV file or > retrieved with the Database Access Kit and I want to make some plots. > > My data looks like this > > {{"a", "b", "c1", "c2", "d"}, > {1.64657, 3.11775, 4.4374, 8.93891, 1.19198}, > {5.5366, 3.5689, 1.32583, 2.6293, 2.38973}, > {9.03042, 9.87567, 4.34064, 8.09357, 3.44279}, > {5.43228, 4.7836, 8.12985, 3.94991, 2.15411}, > etc. > } > > Where the first element contains the column headers and the rest is the > data. Now i want to plot a histogram of, say, Sin[a/b]+c1 where d>c2 or > some crazy thing. > > The only way i have found to do this is along the lines of > psn=Position[data,_?(#[[5]]>#[[4]]&)]; > and more stuff with lots of data[[psn,1]] and data[[psn,2]] > in it, which isn't easy to type or to read. > > I wrote a very simple package to reduce the required typing by using > StringReplace alot. It would require a command like: > > ntPlot[data,"Sin[a/b]+c1","d>c2"]; > > I'm pretty happy with my package, but it has a few difficult flaws. > Before i try to fix them, I would like to know if there is already a > better way to do it. > > Thanks in advance, > > Steve Eichblatt