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

Reply via email to