Matplotlib v0.99 Поверхность с контуром: zdir не работает

1

Я пытаюсь построить функцию f (x, y) = (x + 2) * y ^ 2 с некоторыми кривыми изо-уровня, спроецированными на плоскость x-y. Используемый мной код:

from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FixedLocator, FormatStrFormatter
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import axes3d, Axes3D
import pylab as p


fig = plt.figure()
ax = Axes3D(fig)
X = np.arange(0, 2.5, 0.1)
Y = np.arange(0, 2.5, 0.1)
X, Y = np.meshgrid(X, Y)

Z = ((X+2))*(Y**2)
surf = ax.plot_surface(X, Y, Z,rstride=1, cstride=1, alpha=0.3, cmap=cm.jet)
cset=plt.contour(X,Y,Z,zdir='z',offset=0)


ax.clabel(cset, fontsize=9, inline=1)
ax.set_zlim3d(0, 30)
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')

fig.colorbar(surf, shrink=0.5, aspect=5)
plt.show()

Моя проблема в том, что zdir не работает, то есть линии контура находятся на поверхности, а не на плоскости x-y.

Любые идеи? Спасибо заранее

  • 0
    Я не думаю, что zdir делает то, что, как ты думаешь, делает. Попробуйте zdir='x' и посмотрите на результат. offset определяет местоположение плоскости проекции. На какую поверхность вы хотите проецировать ее, если не на плоскость xy?
Теги:
matplotlib

3 ответа

3
Лучший ответ

Ваш код отлично работает для меня (matplotlib 1.0.1). Изображение 174551

Btw: Кажется, что этот пример был добавлен в галерею с matplotlib 1.0. Может быть, это проблема предыдущей версии?

  • 0
    Это то, что я хотел сделать. Я думаю, что я должен установить версию 1.0.1
2

zdir определяет направление проекта. (zdir='x' выступает вдоль оси x) offset определяет местоположение проектируемой плоскости (вдоль оси, определяемой zdir)

Example

Я собираюсь угадать, что вы хотите:

cset=plt.contour(X,Y,Z,zdir='z',offset=30)
0

- > xs и ys: Это координаты для осей x и y - > zs: Это значение (значения) для оси z. Это может быть один для всех точек или один для каждой точки - > zdir: это выберет то, что будет размером оси z (обычно это zs, но может xs или ys)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню