Pandas dataframe.hist()改变子图上的标题大小?

时间:2017-09-13 03:54:05

标签: python pandas matplotlib dataframe

我正在使用pandas,Python操纵DataFrame。 我的数据是10000(行)X 20(列),我正在想象它,​​就像这样。

df.hist(figsize=(150,150))

但是,如果我把figsize做得更大,每个子图的标题(每个列的名称)都会变得非常小或图形相互重叠,这使得无法区分。

有没有聪明的方法来解决它?

谢谢!

2 个答案:

答案 0 :(得分:5)

可能会有更清洁的方式。这有两种方式。

1)您可以设置子图的属性,如

fig = df.hist(figsize=(50, 30))
[x.title.set_size(32) for x in fig.ravel()]

enter image description here

2)另一种方法是设置matplotlib rcParams默认参数

import matplotlib

params = {'axes.titlesize':'32',
          'xtick.labelsize':'24',
          'ytick.labelsize':'24'}
matplotlib.rcParams.update(params)
df.hist(figsize=(50, 30))

enter image description here

默认问题

这是默认行为,在子图中使用非常小的标签和标题。

matplotlib.rcParams.update(matplotlib.rcParamsDefault)  # to revert to default settings
df.hist(figsize=(50, 30))

enter image description here

答案 1 :(得分:0)

我不建议在每个尺寸上使图形大于10英寸。在任何情况下,这应该足以容纳20个子图。而不是使数字如此之大将使字体合理化 为了防止情节标题出现重叠,您只需拨打plt.tight_layout()

即可
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(1000,20))
df.hist(figsize=(10,9), ec="k")

plt.tight_layout()
plt.show()

enter image description here