Я рисую сюжет розы ветров, используя библиотеку под названием windrose.
Все работает отлично, кроме одной части. Вот пример:
from windrose import WindroseAxes
from matplotlib import pyplot as plt
import matplotlib.cm as cm
import numpy as np
# Create wind speed and direction variables
ws = np.random.random(500) * 6
wd = np.random.random(500) * 360
ax = WindroseAxes.from_ax()
ax.bar(wd, ws, normed=True, opening=0.8, edgecolor='white')
ax.set_legend()
И на основе данных, которые у меня есть в df, я получаю такой график:
Однако желаемый результат для тех же данных должен выглядеть так:
В чем разница? Итак, если вы посмотрите на первый рисунок, вы увидите, что интервалы градусов не начинаются с 0 градусов. Фактически, если вы посмотрите на полосу на N, вы увидите, что она уменьшена вдвое. Однако вторая цифра начинается точно с 0 градусов, а первая полоса начинается точно с N.
Есть ли способ сдвинуть бункеры в windrose так, чтобы они начинались точно с 0 градусов?
Обновлено: Я обновил приведенный выше код, сделав его простым проверяемым образцом. Обратите внимание, что рисунки не обязательно демонстрируют график, нарисованный с использованием кода (из-за генерации случайных чисел), однако его можно использовать как способ продемонстрировать то, что я ищу.
Я не думаю, что в настоящее время есть возможности сделать это с помощью надстройки «Роза ветров». Кажется, вам придется отредактировать код самостоятельно. Хотя такое деление кажется глупым, есть ли особая причина?
Читая документ (windrose.readthedocs.io/en/latest/…), кажется, что в данный момент это невозможно
Я бы не сказал, что это невозможно. Но действительно нужен минимальный воспроизводимый пример (рабочий код) для проверки возможных решений.
@ImportanceOfBeingErnest Я бы скорее имел в виду «еще не разработан в текущей реализации функции». Но да, мне все еще интересно, чтобы минимальный воспроизводимый пример проверял, есть ли хак с этой генерацией фигур.
Редактирую вопрос для минимального примера. Спасибо.
@ImportanceOfBeingErnest да, я считаю, что это не предусмотрено в коде, но было бы здорово, если бы можно было предложить хак, который позволяет это сделать. Спасибо.
Ммм, я просмотрел исходный код, и проблема в том, что это объединение предполагается в нескольких местах. Так что простого взлома не существует. Можно обезьяно исправить функцию histogram, а также функцию _init_plot. В общей сложности это потребовало бы большего количества строк кода, чем рисование желаемого графика вручную с помощью matplotlib.






Можете ли вы добавить несколько примеров данных из df? Как выражается ваш угол в радианах, градусах, гониометрических градусах?