Метки осей y у matplotlib исчезают при изменении размера шрифта - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть следующий код для построения графика содержимого данных.

Использование панд и matplotlib:

thedata = {'2013':[0.0,0.0]
          ,'2014':[0.0,0.0]
          ,'2015':[0.0,0.0]
          ,'2016':[1,0.0]
          ,'2017':[0.0,0.0]
          ,'2018':[1,0.0]}

my_df = pd.DataFrame(thedata, index=['Green cars','Red cars'])

    plt.figure(figsize=(7,3))
    my_ax = plt.gca()
    my_ax.clear()
    my_ax.yaxis.set_major_locator(MaxNLocator(integer=True))

    my_df.transpose().plot(kind='bar'
                , stacked=True  
                , ax=my_ax
                ).grid(True,'major','y')

    my_ax.legend(loc=9, bbox_to_anchor=(0.5, -0.1), frameon=False, ncol=2, fontsize=12 )
    plt.title('All the cars', fontsize = 12 )
    my_ax.set_xticklabels(my_ax.get_xticklabels(),rotation='horizontal', fontsize=12)
#     my_ax.set_yticklabels(my_ax.get_yticklabels(),fontsize=12)

The dataframe and the output

Последняя строка закомментирована, чтобы отобразить вывод.Я хочу, чтобы размер шрифта надписей на оси y был таким же, как и для x, но когда я откомментировал эту строку и запустил ее, надписи на оси y просто исчезают, и там ничего не отображается.

Почему это происходит и как я могу это исправить?

Редактировать: - создать фрейм данных;Панды 0.23.0, matplotlib 2.2.2

1 Ответ

0 голосов
/ 15 ноября 2018

Проблема, с которой вы здесь сталкиваетесь, заключается в том, что тиклбэки фактически не определены до рисования фигуры.

import matplotlib.pyplot as plt
from matplotlib.ticker import MaxNLocator

fig, ax = plt.subplots()
ax.plot([1,3,4,2])
ax.xaxis.set_major_locator(MaxNLocator(integer=True))
ax.set_xticklabels(ax.get_xticklabels(),fontsize=12)
plt.show()

enter image description here

Вы можете нарисовать фигуру, прежде чем получить доступ к этим ярлыкам

fig, ax = plt.subplots()
ax.plot([1,3,4,2])
ax.xaxis.set_major_locator(MaxNLocator(integer=True))

fig.canvas.draw()
ax.set_xticklabels(ax.get_xticklabels(),fontsize=12)
plt.show()

enter image description here

Однако, чтобы изменить размер шрифта в тегах, лучше использовать

ax.tick_params(axis="x", labelsize=12)

или установите свойство для меток, фактически не устанавливая содержимое меток. Например. через setp

plt.setp(ax.get_xticklabels(), fontsize=12)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...