Python plot_surface устанавливает пределы Y по центру в 0 - PullRequest
0 голосов
/ 03 мая 2018

Я использую цилиндрические координаты, создал meshgrid и попытался построить, используя plot_surface. Мой полный набор данных отображается неправильно, потому что масштабирование по оси Y неверно.

Я пытаюсь построить график зависимости значений магнитного поля от значений Z и P (rho). Z может быть как отрицательным, так и положительным. P (ро) может быть только положительным.

Проблема в том, что p (ось Y) всегда начинается с 0 до 10 (что дает 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10), тогда как я хотел бы, чтобы это было похоже на: 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, чтобы его центр находился в 0.

Так что это мой пример кода. Я не буду добавлять расчеты для магнитного поля. Это не относится к данной проблеме.

fig = plt.figure()
ax = Axes3D(fig)

# Define the plane over which fields are computed.
# N must be odd to include the point (0,0).
M = 26  # No. of points along the rho axis.
N = 51  # No. of points along the z axis.
p1 = np.linspace(0, a, M)
p = np.concatenate([p1[::-1][:-1], p1])  # Make it symmetric.
z = np.linspace(-d, d, N)
p, z = np.meshgrid(p, z)  # Create grid of (p,z).

# CALCULATE magnetic field bt. So assume this is done here...
bt = np.sqrt(np.power(bz, 2) + np.power(bp, 2))

ax.plot_surface(z, p, bt, cmap=plt.cm.YlGnBu_r)
plt.show()

Итак, при добавлении строки,

p = np.concatenate([p1[::-1][:-1], p1])

размеры нарушены и plot_surface справедливо жалуется. Я ожидаю, что эта строка будет центрировать 0 в середине массива.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...