Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 2, 2011 21:37:03

febos
От:
Зарегистрирован: 2011-07-31
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

matplotlib, наложение графиков

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

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


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



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



Отредактировано (Окт. 2, 2011 21:40:52)

Офлайн

#2 Окт. 2, 2011 22:39:15

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

matplotlib, наложение графиков

matplotlib 2D рисовалка - просто лепит проекции на экран, может поменяете порядок отрисовки?
Для сложных сцен используйте opengl, vpython и т. п.



Офлайн

#3 Окт. 2, 2011 23:02:53

febos
От:
Зарегистрирован: 2011-07-31
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

matplotlib, наложение графиков

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



Отредактировано (Окт. 2, 2011 23:03:17)

Офлайн

#4 Окт. 3, 2011 07:53:00

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

matplotlib, наложение графиков

Для 3D моделей посмотрите vpython - очень простое средство, с ним не будет указанной проблемы :).

В отличии от matlab - мир python открытая система, каждый делает для нее что может. Если вы поправите ошибки matplotlib, или просто сообщите о них разработчикам, все вам будут благодарны.



Офлайн

#5 Окт. 3, 2011 08:15:50

febos
От:
Зарегистрирован: 2011-07-31
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

matplotlib, наложение графиков

Мне и правда не пришло сразу в голову, что это может быть баг.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version