Ответ 1
Ссылка, которую вы предоставили, является хорошим ресурсом, но показывает, что все это делается в matplotlib.pyplot
и использует .subplots()
для доступа к осям. Пока я делал это раньше, я продолжаю искать способы максимально использовать встроенную функцию pandas .plot()
. Для меня это может упростить код и упростить использование DataFrame.
Кажется, что есть несколько вещей, которые нелегко сделать полностью внутри параметров df.plot()
сами по себе. К счастью, он возвращает matplotlib.AxesSubplot
, что открывает гораздо больший диапазон возможностей.
Я скопировал ваши данные в DataFrame:
df = pd.read_clipboard(quotechar="'")
Он выглядит примерно так:
A B C
0 1 2 'name 1'
1 2 3 'name 2'
2 3 5 'name 3'
Но, конечно, гораздо лучше в не-табличном калеке html. (Возможно, SO будет исправлять этот один день).
Тогда мне оставалось только:
ax = df.A.plot(xticks=df.index, rot=90)
ax.set_xticklabels(df.C)
Если вы используете IPython/Jupyter и %matplotlib inline
, то оба они должны находиться в одной и той же ячейке. Я забыл, что сначала и потратил немало времени, пытаясь понять, что происходит не так.
Вы можете сделать все это с помощью переменной ax
:
ax = df.A.plot()
ax.set_xticks(df.index)
ax.set_xticklabels(df.C, rotation=90)
но, как я уже упоминал, я не нашел способ xticklabels
внутри параметров функции df.plot()
, что позволило бы сделать это все в одной строке.
Дополнительный шаг для поворота ярлыков xtick может быть посторонним в этом примере, но пригодится в том, над которым я работал, когда ища этот ответ.
И, конечно же, вы можете сгруппировать как столбцы A, так и B:
ax = df.plot()
ax.set_xticks(df.index)
ax.set_xticklabels(df.C, rotation=90)