2013-07-04 3 views
0

Так что я пытаюсь построить трехмерную диаграмму, используя mplot3d с matplotlib. Код следующим образом:mplot3d дает пустой график, но нет ошибки

# 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() 

Где сроки погашения и удары 1D массивы и тома является 2D массив нужного размера. Все работает правильно, и все данные действительны. Однако у меня было совершенно пустое окно с серым фоном.

Любой может дать мне несколько намеков на то, что происходит? Я подозреваю, что версия matplotlib не права, но не уверен, как ее проверить.

Заранее спасибо.

+0

В 'ipython' (или только консоль python, если хотите), попробуйте' import matplotlib; matplotlib .__ version__', чтобы получить информацию о версии. Или вы можете использовать однострочный: 'python -c 'import matplotlib; print matplotlib .__ version __ '' – jmetz

ответ

0

В версии Matplotlib я не (1.2.1) projection="3d" выдаст ошибку, если вы также включают в себя:

from mpl_toolkits.mplot3d import Axes3D 

Единственное, что я не могу проверить это линия

Y = dates.date2num(maturities) 

Как я не знаком с тем, какой тип данных date2num ожидает, есть ли у вас какие-либо данные образца?

Помимо этого все отлично работает для меня

0

насчет

matplotlib.pyplot.ioff() 

Это не решить мою «ничего, кроме серого фона» -задачу с mplot3d.