当我使用Pandas制作散点图并在多个子图中指定“c”颜色属性列时,我无法设置图的x轴标签xlabel
。
- 例如,这段代码可以正常工作:我可以看到
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"
,但它不可见:
在这种情况下该如何获得 xlabel?Pandas 的 Github 存储库有 3000 多个未解决问题,而不是将其列为错误,我宁愿找到一个以 Matplotlib 为导向的解决方法来呈现 xlabel。(Python 3.8.1、Pandas 1.0.3、Matplotlib 3.2.0。)
编辑:由于造成混淆,已经从数字列名移动到文本列名。
c
应该是一个列名。如果它是一个类似数组的对象,Pandas 将其视为颜色序列。我的c
使用在非子图情况下运行良好,即可以轻松设置 x 轴标签。子图是导致问题的原因。 - Ahmed Fasihfoo.plot.scatter(x='a', y='b', ax=ax1, c='c')
替换为ax1.scatter(x='a', y='b', c='c', data=foo)
) - ImportanceOfBeingErnest