Смешивать патчи Matplotlib с полярным сюжетом? - PullRequest
2 голосов
/ 04 января 2011

Я пытаюсь построить некоторые данные в полярных координатах, но мне не нужны стандартные метки, метки, оси и т. Д., Которые вы получаете с помощью функции Matplotlib polar().Все, что мне нужно, это необработанный график и ничего больше, поскольку я обрабатываю все с помощью нарисованных вручную участков и линий.

Вот варианты, которые я рассмотрел:

1) Рисование данныхс polar(), скрывая лишние вещи (с ax.axes.get_xaxis().set_visible(False) и т. д.), а затем рисуя мои собственные оси (с Line2D, Circle и т. д.).Проблема в том, что когда я вызываю polar() и затем добавляю патч Circle, он рисуется в полярных координатах и ​​в итоге выглядит как символ бесконечности.Также кажется, что масштабирование не работает с функцией polar().

2) Пропустите функцию polar() и каким-то образом создайте свой собственный полярный график вручную, используя Line2D.Проблема в том, что я не знаю, как заставить Line2D рисовать в полярных координатах, и не понял, как использовать для этого преобразование.

Есть идеи, как мне поступить?

Ответы [ 3 ]

1 голос
/ 04 января 2011

Ваш вариант № 2, вероятно, самый простой, учитывая, что вы хотите сделать. Таким образом, вы останетесь в прямоугольных координатах, измените свою функцию с полярных на прямоугольные координаты и нанесете ее с помощью plot() (что проще, чем использование `Line2D ').

Преобразование вашей полярной функции в прямоугольную можно выполнить с помощью:

def polar_to_rect(theta, r):
    return (r*cos(theta), r*sin(theta))

и построение графика может быть выполнено с помощью:

def my_polar(theta, r, *args, **kwargs):
    """
    theta, r -- NumPy arrays with polar coordinates.
    """
    rect_coords = polar_to_rect(theta, r)
    pyplot.plot(rect_coords[0], rect_coords[1], *args, **kwargs)
    # You can customize the plot with additional arguments, or use `Line2D` on the points in rect_coords.
0 голосов
/ 20 мая 2014

Что касается вашего комментария об использовании преобразований matplotlib ... Я использовал следующий метод для перевода полярного графика в многоугольник, который я мог рисовать на своих декартовых / прямоугольных осях.

import matplotlib.pyplot as plt

polarPlot = plt.subplot(111, polar = True)
# Create some dummy polar plot data
polarData = np.ones((360,2))
polarData[:,0] = np.arange(0, np.pi, np.pi/360) * polarData[:,0]
# Use the polar plot axes transformation into cartesian coordinates
cartesianData = polarPlot.transProjection.transform(polarData)
0 голосов
/ 04 января 2011

Чтобы удалить галочки и метки, попробуйте использовать

`matplotlib.pyplot.tick_params(axis='both', which='both', length=0, width=0, labelbottom = False, labeltop = False, labelleft = False, labelright = False)`

С http://matplotlib.sourceforge.net/api/pyplot_api.html#matplotlib.pyplot.polar

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