当我创建这样的子图时:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import itertools
df = pd.DataFrame(np.random.randn(20, 10), columns=list('ABCDEFGHIJ'))
ax = df.plot(kind='bar', subplots=True, layout=(4, 3), sharex=True, sharey=False)
我得到一个这样的图,其中列标题用作子图的标题:
当我将kind='bar'
更改为kind='line'
时,只会显示图例但不会显示标题。
解决方法是使用.get_legend_handles_labels()
,如下所示:
for axi in itertools.chain.from_iterable(ax):
try:
axi.set_title(axi.get_legend_handles_labels()[1][0], {'size': 16})
except:
pass
然后给出正确的输出:
有没有更直接的方法来实现这一目标?为什么plot
的行为会有所不同,具体取决于标记kind
?
答案 0 :(得分:2)
解决方法:
plotting.py
。这允许为titles
的{{1}}参数提供列表。 使用
plot
获取子剧情标题。
当然您也可以直接尝试更改代码以包含轴标题的设置。 barplot的代码在当前开发版本的2006年左右;并且你需要将它放在线条1757附近的LinePlot的ax = df.plot(kind="line",subplots=True, layout=(4, 3),
sharex=True, sharey=False, title=list(df.columns.values))
方法中,其中一个简单的_make_plot()
就足够了。问题可能是大熊猫会要求你重建它。 (我没有测试过。)