Невозможно установить xlabel, когда Pandas создает точечную диаграмму в нескольких вспомогательных участках с цветной меткой - PullRequest
2 голосов
/ 28 марта 2020

Я не могу установить xlabel графиков, когда

  • Я использую Pandas, чтобы создать scatter графиков
  • внутри нескольких вспомогательных участков
  • и указав c столбец атрибута цвета.

Например, это работает нормально: я вижу xlabel:

import numpy as np
import pandas as pd
import pylab as plt
plt.ion()

foo = pd.DataFrame(np.random.randn(5, 5), columns='a b c d e'.split())

fig, (ax1, ax2) = plt.subplots(nrows=2, sharex=True)
foo.plot.scatter(x='a', y='b', ax=ax1)
foo.plot.scatter(x='a', y='c', ax=ax2)
ax2.set_xlabel('xxx')  # works

Однако, следующий небольшой поворот где я устанавливаю поле цвета c, не устанавливает xlabel:

fig, (ax1, ax2) = plt.subplots(nrows=2, sharex=True)
foo.plot.scatter(x='a', y='b', ax=ax1, c='c')
foo.plot.scatter(x='a', y='c', ax=ax2, c='c')
ax2.set_xlabel('xx')  # NO x label

plt.xlabel тоже не работает. ax2.get_xlabel() возвращает ожидаемое "xx", но оно не отображается:

no x label

Как я могу получить xlabel в этом случае? Pandas В репозитории Github более 3000 открытых вопросов, вместо того, чтобы регистрировать это как ошибку, я бы предпочел найти решение, ориентированное на Matplotlib, для рендеринга xlabel. (Python 3.8.1, Pandas 1.0.3, Matplotlib 3.2.0.)

Редактировать: перемещено из числовых c имен столбцов в текстовые имена столбцов, поскольку это вызывает путаницу.

1 Ответ

1 голос
/ 28 марта 2020

По какой-то причине видимость xlabel устанавливается на False, чтобы обойти его, вам просто нужно сделать

fig, (ax1, ax2) = plt.subplots(nrows=2, sharex=True)
foo.plot.scatter(x='a', y='b', ax=ax1, c='c')
foo.plot.scatter(x='a', y='c', ax=ax2, c='c')
ax2.set_xlabel('xxx')
ax2.xaxis.get_label().set_visible(True)

Это даст вам

enter image description here

...