【问题标题】:Pandas dataframe.hist() change title size on subplot?Pandas dataframe.hist() 更改子图上的标题大小?
【发布时间】:2018-02-21 15:16:06
【问题描述】:

我正在使用 pandas、Python 操作 DataFrame。 我的数据是 10000(行)X 20(列),我正在对其进行可视化,就像这样。

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

但是,如果我将 figsize 放大,每个子图的标题(即每列的名称)会变得非常小,或者图形相互重叠,无法区分。

有什么巧妙的办法解决吗?

谢谢!

【问题讨论】:

  • pandas.pydata.org/pandas-docs/stable/generated/… 有一个xlabelsize 参数,这是你想要的吗?
  • @cᴏʟᴅsᴘᴇᴇᴅ 我不确定,我在哪里可以使用该参数(?)??
  • 作为hist的第二个参数
  • @cᴏʟᴅsᴘᴇᴇᴅ 它不起作用。子图的标题与每列的名称相同。我将编辑我的帖子以澄清我的问题。

标签: python pandas matplotlib dataframe


【解决方案1】:

可能有更清洁的方法。这里有两种方法。

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

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

2)另外一种方式,就是设置matplotlib rcParams默认参数

import matplotlib

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


默认问题

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

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

【讨论】:

    【解决方案2】:

    我不建议使图形在每个维度上都大于 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()
    

    【讨论】:

    • @JohnGalt 没有使用特定的样式。图片上方的代码与标准 matplotlib 安装一起提供了所示的图像。当你运行那段代码时,它看起来有什么不同吗?
    • @JohnGalt 我明白了。对于那一点,您可能对this post 感兴趣
    猜你喜欢
    • 2017-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-18
    • 2020-06-14
    • 2017-12-02
    • 2021-12-24
    相关资源
    最近更新 更多