I want the edgecolor of an ellipse to be a function of a third variable. Let's assume the third variable is called flux. If the value of the variable 'flux' is high, I want the edgecolor of the ellipse to be dark blue, if the value is low I want the color to be yellow. Any intermediate values should be a mix of these colors. I want this color gradient to be visible on the z axis of the plot with the highest and lowest values. I tried referring to this link Matplotlib scatterplot; colour as a function of a third variable but this doesn't seem to apply in my case. I am reading the parameters required to plot the ellipse from a text file which looks like this:
149.20562 2.29594 0.00418 0.00310 83.40 1.15569
149.23158 1.99783 0.00437 0.00319 90.30 3.46331
149.23296 2.45440 0.00349 0.00264 120.30 2.15457
The fifth column is the column named 'flux' based on which the color gradient must be plotted.
Here is an example of my attempt.
import matplotlib.pyplot as plt
import numpy as np
import math
import astropy.io.ascii as asciitable
from matplotlib.patches import Ellipse
ax = plt.gca()
path="/users/xxxx/Desktop/"
plt.xlim([149,151.3])
plt.ylim([1,3.3])
fw=open(path + 'data_plot.txt', 'r')
data = asciitable.read(path+ "data_plot.txt")
np.array(data)
for i in range(len(data)):
ra,dec,maj,minor,ang,flux =data[i][0],data[i][1],data[i][2],data[i][3],data[i][4],data[i][5]
ellipse = Ellipse(xy=(ra, dec), width=maj, height=minor, angle=ang, edgecolor=flux, lw=3, fc='None')
ax.add_patch(ellipse)
plt.xlabel('Right Ascention')
plt.ylabel('Declination')
plt.title('abc')
plt.savefig(path+'abc.eps')
As expected this didn't work. Here is my error log.
runfile('/users/vishnu/.spyder2-py3/radio_sources.py', wdir='/users/vishnu/.spyder2-py3')

Traceback (most recent call last):
File "<ipython-input-695-a0011c0326f5>", line 1, in <module>
runfile('/users/vishnu/.spyder2-py3/radio_sources.py', wdir='/users/vishnu/.spyder2-py3')
File "/users/vishnu/anaconda3/lib/python3.5/site-packages/spyderlib/widgets/externalshell/sitecustomize.py", line 699, in runfile
execfile(filename, namespace)
File "/users/vishnu/anaconda3/lib/python3.5/site-packages/spyderlib/widgets/externalshell/sitecustomize.py", line 88, in execfile
exec(compile(open(filename, 'rb').read(), filename, 'exec'), namespace)
File "/users/vishnu/.spyder2-py3/radio_sources.py", line 63, in <module>
ellipse = Ellipse(xy=(ra, dec), width=maj, height=minor, angle=ang, edgecolor=flux, lw=3, fc='None')
File "/users/vishnu/anaconda3/lib/python3.5/site-packages/matplotlib/patches.py", line 1378, in __init__
Patch.__init__(self, **kwargs)
File "/users/vishnu/anaconda3/lib/python3.5/site-packages/matplotlib/patches.py", line 111, in __init__
self.set_edgecolor(edgecolor)
File "/users/vishnu/anaconda3/lib/python3.5/site-packages/matplotlib/patches.py", line 277, in set_edgecolor
self._edgecolor = colors.colorConverter.to_rgba(color, self._alpha)
File "/users/vishnu/anaconda3/lib/python3.5/site-packages/matplotlib/colors.py", line 376, in to_rgba
'to_rgba: Invalid rgba arg "%s"\n%s' % (str(arg), exc))
ValueError: to_rgba: Invalid rgba arg "1.15569"
to_rgb: Invalid rgb arg "1.15569"
cannot convert argument to rgb sequence