Python / matplotlib mplot3d - как мне установить максимальное значение для оси z? - PullRequest
13 голосов
/ 06 февраля 2011

Я пытаюсь создать трехмерный график поверхности для выражения: z = y ^ 2 / x, для x в интервале [-2,2] и y в интервале [-1.4,1.4].Я также хочу, чтобы значения z находились в диапазоне от -4 до 4.

Проблема заключается в том, что при просмотре готового графика поверхности значения оси z не останавливаются на [-4,4].

Таким образом, мой вопрос заключается в том, как я могу «удалить» значение оси z, находящееся вне интервала [-4,4], из готового графика?

Мой код:

from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = fig.gca(projection="3d")

x = np.arange(-2.0,2.0,0.1,float)       # x in interval [-2,2]
y = np.arange(-1.4,1.4,0.1,float)       # y in interval [-1.4,1.4]
x,y = np.meshgrid(x,y)
z = (y**2/x)                            # z = y^2/x

ax.plot_surface(x, y, z,rstride=1, cstride=1, linewidth=0.25)

ax.set_zlim3d(-4, 4)                    # viewrange for z-axis should be [-4,4] 
ax.set_ylim3d(-2, 2)                    # viewrange for y-axis should be [-2,2] 
ax.set_xlim3d(-2, 2)                    # viewrange for x-axis should be [-2,2] 
plt.show()

Ответы [ 2 ]

11 голосов
/ 03 сентября 2013

У меня та же проблема, и я до сих пор не нашел ничего лучше, чем вырезать мои данные.К сожалению, в моем случае я привязан к matplotlib 1.2.1.Но в случае, если вы можете перейти на версию 1.3.0, у вас может быть решение: кажется, есть куча новых API , связанных с диапазонами осей.В частности, вас может заинтересовать "set_zlim".

Редактировать 1: Управлять переносом моей среды для использования matplotlib 1.3.0;set_zlim работал как шарм:)

Следующий код работал на меня (кстати, я запускаю это на OSX, я не уверен, что это повлияет?)

1 голос
/ 06 февраля 2011

обрезка ваших данных сделает это, но это не очень красиво.

z[z>4]= np.nan
z[z<-4]= np.nan
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...