Re: [Matplotlib-users] how to create a facecolors map?

2013-08-29 Thread vwf
On Wed, Aug 28, 2013 at 06:39:26PM +0200, vwf wrote:
> Hello,
> 
> I would like to create a surface with a color provided by an independent
> variable. 

Got something working:


import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter

no=100

#
# color trick to draw with varying alpha
# 
http://matplotlib.1069221.n5.nabble.com/scatter-plot-individual-alpha-values-td21106.html
#

from matplotlib.colors import LinearSegmentedColormap

class LinearColormap(LinearSegmentedColormap):

def __init__(self, name, segmented_data, index=None, **kwargs):
if index is None:
# If index not given, RGB colors are evenly-spaced in
# colormap.
index = np.linspace(0, 1, len(segmented_data['red']))
for key, value in segmented_data.iteritems():
# Combine color index with color values.
segmented_data[key] = zip(index, value)
segmented_data = dict((key, [(x, y, y) for x, y in value])
  for key, value in
segmented_data.iteritems())
LinearSegmentedColormap.__init__(self, name, segmented_data, **kwargs)

color_spec = {'blue':  [0.0, 0.0],
   'green': [1.0, 0.0],
   'red':   [0.0, 1.0],
   'alpha': [0.1, 1.0]}
alpha_color = LinearColormap('alpha_color', color_spec)

#==

fig = plt.figure()
ax = fig.gca(projection = '3d')
x = np.linspace(-5,5,no)
y = np.linspace(-5,5,no)
x,y = np.meshgrid(x,y)
R = np.sqrt(x**2 + y**2)
z = np.sin(R)
D = np.sqrt((x-5)**2 + (y-5)**2)
c=np.zeros(shape=(no,no),dtype=object)

for i in range(no):
for j in range(no):
c[i,j]=alpha_color(D[i,i]/15)

surf = ax.plot_surface(x, y, z, facecolors=c, rstride = 1, cstride = 1, 
linewidth = 0)
ax.set_zlim3d(-2, 2)
plt.show()


--
Learn the latest--Visual Studio 2012, SharePoint 2013, SQL 2012, more!
Discover the easy way to master current and previous Microsoft technologies
and advance your career. Get an incredible 1,500+ hours of step-by-step
tutorial videos with LearnDevNow. Subscribe today and save!
http://pubads.g.doubleclick.net/gampad/clk?id=58040911&iu=/4140/ostg.clktrk
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


[Matplotlib-users] how to create a facecolors map?

2013-08-28 Thread vwf
Hello,

I would like to create a surface with a color provided by an independent
variable. The shape is defined by a matrix  with the z-values. The
color is a matrix of identical shape with floats. Can this be done?
My experiment code is incomplete: I could not write anything useful. Can
onyone help me making it work?

Thank you


import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter

no=100
cdict = {'red':   ((0.0,  0.0, 0.0),
   (15.0,  1.0, 1.0)),

 'green': ((0.0,  0.0, 0.0),
   (15.0,  0.0, 0.0)),

 'blue':  ((0.0,  1.0, 1.0),
   (15.0,  0.0, 0.0))}

fig = plt.figure()
ax = fig.gca(projection = '3d')
x = np.linspace(-5,5,no)
y = np.linspace(-5,5,no)
x,y = np.meshgrid(x,y)
R = np.sqrt(x**2 + y**2)
z = np.sin(R)
D = np.sqrt((x-5)**2 + (y-5)**2)
#and now I need to map distance D 
#making (-5,-5) blue and (5,5) red
c= 

surf = ax.plot_surface(x, y, z, facecolors=c, rstride = 1, cstride = 1, cmap = 
jet, linewidth = 0)
ax.set_zlim3d(-2, 2)
plt.show()

--
Learn the latest--Visual Studio 2012, SharePoint 2013, SQL 2012, more!
Discover the easy way to master current and previous Microsoft technologies
and advance your career. Get an incredible 1,500+ hours of step-by-step
tutorial videos with LearnDevNow. Subscribe today and save!
http://pubads.g.doubleclick.net/gampad/clk?id=58040911&iu=/4140/ostg.clktrk
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users