У меня проблема с изменением меток моей оси в Matplotlib.Я хочу изменить параметры радиальной оси в моем полярном графике.
По сути, я вычисляю искажение цилиндра, которое является ничем иным, как отклонением радиуса от исходного (идеально круглого) цилиндра.Некоторые из значений искажения являются отрицательными, в то время как некоторые являются положительными из-за растягивающих и сжимающих сил.Я ищу способ изобразить это в цилиндрических координатах графически, поэтому я подумал, что полярный график - моя лучшая ставка.В Excel есть опция «Радарная карта», которая достаточно гибкая, чтобы указывать минимальные и максимальные значения радиальной оси.Я хочу повторить это на Python, используя Matplotlib.
Мой скрипт Python для построения графиков на полярных координатах выглядит следующим образом.
#!usr/bin/env python
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(-180.0,190.0,10)
theta = (np.pi/180.0 )*x # in radians
offset = 2.0
R1 = [-0.358,-0.483,-0.479,-0.346,-0.121,0.137,0.358,0.483,0.479,0.346,0.121,\
-0.137,-0.358,-0.483,-0.479,-0.346,-0.121,0.137,0.358,0.483,0.479,0.346,0.121,\
-0.137,-0.358,-0.483,-0.479,-0.346,-0.121,0.137,0.358,0.483,0.479,0.346,0.121,\
-0.137,-0.358]
fig1 = plt.figure()
ax1 = fig1.add_axes([0.1,0.1,0.8,0.8],polar=True)
ax1.set_rmax(1)
ax1.plot(theta,R1,lw=2.5)
Мой график выглядит следующим образом:
Но я не хочу это представлять.Я хочу изменять свою радиальную ось, так что я могу показать данные как отклонение от некоторого эталонного значения, скажем, -2.Как попросить Matplotlib в полярных координатах изменить метку минимальной оси?Я могу сделать это очень легко в Excel.Я выбираю минимальное радиальное значение -2, чтобы получить следующую радиолокационную карту Excel:
В Python я могу легко сместить свои входные данные на величину 2. Мой новый набор данныхназывается R2, как показано:
#!usr/bin/env python
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(-180.0,190.0,10)
theta = (np.pi/180.0 )*x # in radians
offset = 2.0
R2 = [1.642,1.517,1.521,1.654,1.879,2.137,2.358,2.483,2.479,2.346,2.121,1.863,\
1.642,1.517,1.521,1.654,1.879,2.137,2.358,2.483,2.479,2.346,2.121,1.863,1.642,\
1.517,1.521,1.654,1.879,2.137,2.358,2.483,2.479,2.346,2.121,1.863,1.642]
fig2 = plt.figure()
ax2 = fig2.add_axes([0.1,0.1,0.8,0.8],polar=True)
ax2.plot(theta,R2,lw=2.5)
ax2.set_rmax(1.5*offset)
plt.show()
Сюжет показан ниже:
Как только я получу это, я могу вручную добавить метки осей и жестко закодировать их в свой скрипт.Но это действительно безобразный способ.Можно ли каким-либо образом получить эквивалент Matplotlib для радиолокационной карты Excel и изменить метки осей без необходимости манипулировать входными данными?