Найти - Пользователи
Полная версия: matplotlib, наложение графиков
Начало » Python для новичков » matplotlib, наложение графиков
1
febos
Вечер добрый. Столкнулся со следующей проблемой: на графике рисую сферу и плоскость. И, несмотря на то, что сфера выше по координатам, плоскость её накрывает!! Прогуглил всё, что мог, ничего кроме совмещения лимитов разных графиков не нашел, а это, соответственно совсем другая проблема. Помогите пожалуйста!!

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm

N = 1
a1 = 0.5 + 1/N
b1 = 1.5 + 1/(N + 1)
r1 = 1 - 1/(N + 2)
a2 = 1.5 + 1/N
b2 = 0.5 + 1/(N + 1)
r2 = 0.5 + 1/(N + 2)

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

x2 = np.linspace(-1, 1, 100)
y2 = np.linspace(-1, 1, 100)
x2, y2 = np.meshgrid(x2, y2)
z2 = np.zeros(x2.shape)

ax.plot_surface(x2, y2, z2, rstride=4, cstride=4, cmap=cm.ocean) #плоскость


u = np.linspace(0, 2 * np.pi, 100)
v = np.linspace(0, np.pi, 100)

r=0.5

x = r * np.outer(np.cos(u), np.sin(v))
y = r * np.outer(np.sin(u), np.sin(v))
z = 0.5 + r * np.outer(np.ones(np.size(u)), np.cos(v))
ax.plot_surface(x, y, z, rstride=4, cstride=4, color='r',) #сфера

ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlim3d(-1,1)

plt.show()


Здесь видно, что сфера выше:



как должно быть:

doza_and
matplotlib 2D рисовалка - просто лепит проекции на экран, может поменяете порядок отрисовки?
Для сложных сцен используйте opengl, vpython и т. п.
febos
в моём случае всё-таки не 2D-рисовалка, так как я, как минимум, могу крутить получившуюся 3D-модель! Я пробовал менять порядок прорисовки - не помогло (что меня сильно удивило). Самое интересное, что при определенном угле поворота, сфера таки оказывается сверху. Сей факт поверг меня в шок (на некоторое время). Однако, мне и нужен был всего-лишь скриншот, где всё правильно видно, так что вопрос, наверное, исчерпан. По поводу других инструментов - я весь прошлый курс моделировал в matlab, а сейчас решил всё делать на питоне. Гугл сказал, что matplotlib - то, что мне нужно. Я ему поверил)
Всем спасибо за внимание!
doza_and
Для 3D моделей посмотрите vpython - очень простое средство, с ним не будет указанной проблемы :).

В отличии от matlab - мир python открытая система, каждый делает для нее что может. Если вы поправите ошибки matplotlib, или просто сообщите о них разработчикам, все вам будут благодарны.
febos
Мне и правда не пришло сразу в голову, что это может быть баг.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB