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