Изменение параметров оси для полярных графиков в Matplotlib/Python

У меня проблема с изменением меток осей в 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)

Мой график выглядит следующим образом: bad

Но это не то, как я хочу его представить. Я хочу изменить радиальную ось, чтобы показать данные как отклонение от некоторого опорного значения, скажем, -2. Как попросить Matplotlib в полярных координатах изменить метку минимальной оси? Я могу сделать это ОЧЕНЬ легко в Excel. Я выбираю минимальное радиальное значение -2, чтобы получить следующий график радара Excel:
excelplot

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

График показан ниже: good

Получив это, я могу ВРУЧНУЮ добавить метки осей и жестко закодировать их в своем скрипте. Но это очень некрасивый способ. Могу ли я каким-либо образом напрямую получить эквивалент радарной диаграммы Excel в Matplotlib и изменить метки осей без необходимости манипулировать входными данными?

5
задан prrao 9 February 2012 в 21:50
поделиться