2013-07-04 1 views
0

Donc j'essaye de tracer un graphe 3d en utilisant mplot3d avec matplotlib. Code comme suit: est un tableau 2D avec la taille appropriéemplot3d donne un graphe vide mais pas d'erreur

# generate the graph 
# vols is a 2D array indexed by [maturity, strike]. 
def DrawGraph(self, strikes, maturities, vols):  
    import matplotlib.dates as dates 
    import matplotlib.pyplot as pyplot 

    # prepare data 
    Y = dates.date2num(maturities) 
    X, Y = numpy.meshgrid(strikes, Y) 

    # plot 
    fig = pyplot.figure() 
    ax = fig.add_subplot(111, projection='3d') 
    ax.plot_wireframe(X, Y, vols) 
    pyplot.show() 

Lorsque les échéances et les grèves sont des tableaux 1D et volumes. Tout fonctionne correctement et toutes les données sont valides. Cependant, j'ai une fenêtre totalement vide avec rien mais un fond gris.

Quelqu'un peut-il me donner quelques indications sur ce qui se passe? Je soupçonne que la version de matplotlib n'est pas correcte mais je ne sais pas comment la vérifier.

Merci d'avance.

+0

Dans 'ipython' (ou simplement la console python si vous préférez), essayez' import matplotlib; matplotlib .__ version__' pour obtenir les informations de version. Ou vous pouvez utiliser le one-liner: 'python -c 'import matplotlib; print matplotlib .__ version __ '' – jmetz

Répondre

0

Dans la version de matplotlib j'ai (1.2.1) le projection="3d" soulèvera une erreur à moins que vous aussi inclure:

from mpl_toolkits.mplot3d import Axes3D 

La seule chose que je ne peux pas vérifier est la ligne

Y = dates.date2num(maturities) 

Comme je ne connais pas le type de données attendu date2num, avez-vous des exemples de données?

tout autre que cela fonctionne bien pour moi

0

Qu'en est-

matplotlib.pyplot.ioff() 

qui a résolu mon « rien fond gris » -problem avec mplot3d.