Округлите и начертите внешний масштаб на полярном графике - PullRequest
0 голосов
/ 25 мая 2020

Я нашел этот ответ на вопрос, где предоставляется подход для масштаба вне полярного графика (функция add_scale там). Я попытался применить это и к своим данным, и это почти сработало. Как показано на рисунке, в верхней части масштабной линейки есть проблема. Как мне удалить эту слишком длинную часть шкалы?

Второй вопрос: как мне округлить значения на этой шкале до двух цифр. Я просмотрел этот вопрос, но это не сработало.

Я повторно отправлю код здесь со всеми кредитами на @ lostin .

# to control how far the scale is from the plot (axes coordinates)    
def add_scale(ax, X_OFF, Y_OFF):
    # add extra axes for the scale
    X_OFFSET = X_OFF
    Y_OFFSET = Y_OFF
    rect = ax.get_position()
    rect = (rect.xmin-X_OFFSET, rect.ymin+rect.height/2-Y_OFFSET, # x, y
            rect.width, rect.height/2) # width, height
    scale_ax = ax.figure.add_axes(rect)
   # if (X_OFFSET >= 0):
        # hide most elements of the new axes
    for loc in ['right', 'top', 'bottom']:
        scale_ax.spines[loc].set_visible(False)
#    else:
#        for loc in ['right', 'top', 'bottom']:
#            scale_ax.spines[loc].set_visible(False)
    scale_ax.tick_params(bottom=False, labelbottom=False)
    scale_ax.patch.set_visible(False) # hide white background
    # adjust the scale
    scale_ax.spines['left'].set_bounds(*ax.get_ylim())
    # scale_ax.spines['left'].set_bounds(0, ax.get_rmax()) # mpl < 2.2.3
    scale_ax.set_yticks(ax.get_yticks())
    scale_ax.set_ylim(ax.get_rorigin(), ax.get_rmax())
    # scale_ax.set_ylim(ax.get_ylim()) # Matplotlib < 2.2.3

Изменить:

Я попытался округлить значения следующей строкой

scale_ax.set_yticks(round(float(ax.get_yticks()), 2))

вместо

scale_ax.set_yticks(ax.get_yticks())

, но это не улучшило мою шкалу, как показано ниже, хотя мои ticks теперь округлены:

1 Ответ

1 голос
/ 28 мая 2020

Вам необходимо определить или изменить ylimit для вашего графика.

scale_ax.set_ylim(ax.get_rorigin(), ax.get_rmax())

Вышеуказанная строка используется для определения минимального и максимального значения на добавленной шкале.

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