Matplotlib pyplot имеет частичные метки xtick, которые не вращаются - PullRequest
0 голосов
/ 25 сентября 2018

Кажется, есть какая-то проблема с графиком, который я строю, потому что тики по оси X не помещаются в нужных местах.

Похоже, что существуют дополнительные метки тиков по оси Xдобавлены потому, что они не соответствуют правилам, которые я им дал.

Weird x-tick labels not rotating as required

Как вы можете видеть выше, основные тики (даты, т.е.2018-09-22) немного смещены влево.Это дает второстепенным тикам (часам, т.е. 06:00 утра) некоторое пространство.

Однако не все второстепенные тики следуют правилу вращения.

Регулировка тиков по оси X

Вот код, который я использовал для обозначения отметок оси x:

def label_x_axis(axis, title, dates, figure):
    axis.set_title(title)

    axis.grid(True)

    axis.xaxis.set_major_locator(mdates.DayLocator())
    axis.xaxis.set_minor_locator(mdates.HourLocator(np.arange(0, 25, 6)))

    axis.set_xticklabels(dates, rotation=60, horizontalalignment='right', minor=True, fontdict=(
        {
            'fontsize': '6',
            'horizontalalignment': 'right'
        }
    ))

    axis.set_xticklabels(dates, rotation=60, horizontalalignment='right', minor=False, fontdict=(
        {
            'fontsize': '8',
            'horizontalalignment': 'right'
        }
    ))

    # Create offset transform by 5 points in x direction
    dx, dy = -12 / 72.0, 0 / 72.0

    # offset = figure.dpi_scale_trans  # matplotlib.transforms.Affine2D().translate(dx, dy).rotate(0)

    # matrix
    offset = matplotlib.transforms.ScaledTranslation(dx, dy, figure.dpi_scale_trans)

    axis.xaxis.labelpad = 20

    dayFmt = mdates.DateFormatter('%Y-%m-%d')
    hourFmt = mdates.DateFormatter('%H:%M %p')

    axis.xaxis.set_major_formatter(dayFmt)
    axis.xaxis.set_minor_formatter(hourFmt)

    # apply offset transform to all x ticklabels.
    for label in axis.xaxis.get_majorticklabels():
        label.set_transform(label.get_transform() + offset)

Полный Пример Google Colab Laboratory здесь .

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