# Plotting data in Mathematica certain colours depending on

1. Jun 20, 2013

### stripes

1. The problem statement, all variables and given/known data

I have a list of data in .csv format that looks like the following:

10 5 TRUE
10.1 5.1 TRUE
10.2 5.2 FALSE
10.3 5.3 FALSE
10.4 5.4 FALSE
10.5 5.5 TRUE
10.6 5.6 TRUE
...
There are thousands of entries.

I want to make a scatter plot in Mathematica where it plots the points {10, 5}, {10.1, 5.1}, etc., but I want the ones with TRUE to be blue, and FALSE to be red.

2. Relevant equations

--

3. The attempt at a solution

I've tried using a while loop then an if statement to do this, but it seems to be an infinite loop. What I did was:

homeruns = column3 (so this is now a list with TRUE FALSE TRUE FALSE etc.)
angles = column2
initialV = column1

Code (Text):
ListPlot[Transpose[{angles, initialV}], i=0; while [i<length[homeruns], If [ truefalse[[i]], PlotStyle -> {Blue}, PlotStyle -> {Red} ] i++; ]]
But this is just stupid. How could I go about making a plot where certain sections of the plot will be one colorr vs another colour, depending on that point's truth value?
1. The problem statement, all variables and given/known data

2. Relevant equations

3. The attempt at a solution

2. Jun 20, 2013

### Bill Simpson

In[1]:= data = Import["data.csv"]

Out[1]= {{10, 5, "TRUE"}, {10.1, 5.1, "TRUE"}, {10.2, 5.5, "FALSE"}, {10.3, 5.6, "FALSE"}, {10.4, 5.7, "FALSE"}, {10.5, 5.5, "TRUE"}, {10.6, 5.6, "TRUE"}}

In[2]:= truedata = Cases[data, {x_, y_, "TRUE"} :> {x, y}]

Out[2]= {{10, 5}, {10.1, 5.1}, {10.5, 5.5}, {10.6, 5.6}}

In[3]:= falsedata = Cases[data, {x_, y_, "FALSE"} :> {x, y}]

Out[3]= {{10.2, 5.5}, {10.3, 5.6}, {10.4, 5.7}}

In[4]:= ListPlot[{truedata, falsedata}, Joined -> True]

Out[4]= ...PlotSnipped...

And then you can begin exploring graphics primitives to change colors of individual plots, points, etc

But watch out for combining several plots when some versions Mathematica will take the PlotRange from the first data set and ignore the range of subsequent data sets. You can overcome that by giving an explicit PlotRange large enough to show all your data