Hi all,
On Sun, 6 Feb 2011 03:54:48 PM Paul Leopardi wrote:
> I'm having trouble using multiple figures with mplot3d.
I have appended an entire example script, below.
The script incrementally plots 3 curves, one in each of 3 figure windows. The
trouble is, once Figure 2 has finished plotting, the curve for Figure 1
disappears and is replaced by the curve for Figure 2, with the axes for Figure
1; once Figure 3 has finished plotting, the curves for Figures 1 and 2
disappear and are replaced by the curve for Figure 3, with the axes for Figure
1 and Figure 2, respectively.
The original code was written with incremental plotting because the points
took a long time to calculate. Without incremental plotting, the figures
stayed blank for a long time. The script below is very similar to my original
script, but does not depend on my GluCat library.
Best, Paul
---
# -*- coding: utf-8 -*-
# Imports needed for array calculation and plotting.
from numpy import array, floor, random, empty, cos, pi
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
# Constants to control the plotting.
C=3 # Number of curves to plot.
P=1000 # Number of points overall.
R=2 # Scaling constant to use.
N=25 # Number of points in a curve segment.
M=P/N
# Array of points.
x=empty((3,P))
rgb=empty((3))
# Plot C curves.
for i in xrange(0,C):
# Initial point.
x0=random.randn(3)
# Plot a curve using a random bivector in R_{5,0}
# with appropriate scaling.
w=random.randn(3) * 2*pi*R/P
# Use a new figure for each curve.
fig=plt.figure(figsize=(15,12))
# ax=Axes3D(fig)
ax = fig.gca(projection='3d')
plt.show()
# Coordinate limits to determine the colour of the first curve segment.
minx=array([-x0[0],x0[1],-x0[2]])
maxx=minx.copy()
# Split the curve into M segments, each with an appropriate colour.
for j in range(0,M):
# Find N points forming a curve segment by
# exponentiating w*k for k from j*N to (j+1)*N-1.
abot=j*N
atop=abot+N
for k in xrange(abot,atop):
for h in range(0,3):
x[h,k]=x0[h]+cos(w[h]*k)
# Determine the colour of the curve segment.
amid=floor((abot+atop)/2)
for h in range(0,3):
sign=(-1)**(h+1)
minx[h]=min(minx[h],min(sign*x[h,abot:atop]))
maxx[h]=max(maxx[h],max(sign*x[h,abot:atop]))
rgb[h]=max(0.0,min((sign*x[h,amid]-minx[h])/(maxx[h]-minx[h]),1.0))
# Plot the curve segment using the chosen colour.
alow=(abot-1 if j>0 else abot)
ax.plot(x[0,alow:atop],x[1,alow:atop],x[2,alow:atop],c=rgb.tolist())
plt.draw()
plt.show()
------------------------------------------------------------------------------
The modern datacenter depends on network connectivity to access resources
and provide services. The best practices for maximizing a physical server's
connectivity to a physical network are well understood - see how these
rules translate into the virtual world?
http://p.sf.net/sfu/oracle-sfdevnlfb
_______________________________________________
Matplotlib-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-users