如何为pandas数据帧hist()创建网格轴不可见?

时间:2015-05-13 19:36:24

标签: python pandas matplotlib

这是我想要做的,数据帧的所有列的直方图,但没有网格轴。下面的代码有效,但最好是我想要一个更优雅的解决方案(例如将参数传递给hist)

%matplotlib inline
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

X = np.asarray([50]*25+[30]*10)
X2 = np.asarray([90]*10+[20]*25)
X3 = np.asarray([10]*15+[70]*20)

df = pd.DataFrame(np.vstack([X, X2, X3]).T)


def plot_hists(df, nbins=10, figsize=(8, 8), disable_axis_labels = True):
    plt.close('all')
    grid_of_ax_hists = df.hist(bins=nbins, figsize=figsize)
    if disable_axis_labels:
        for row in grid_of_ax_hists:
            for ax in row:
                ax.xaxis.set_visible(False)
                ax.yaxis.set_visible(False)
    plt.show()

    df.hist()
    plt.subplots()

plot_hists(df, nbins=10, figsize=(8, 8), disable_axis_labels = True)

2 个答案:

答案 0 :(得分:1)

即便如此,这个帖子还是有点老了,我想添加一个有效的解决方案,因为我遇到了同样的问题。

至少在熊猫0.18

df.hist()从pandas.DataFrame.plot获取所有可能的绘图关键字

df.hist(grid=False) 

很容易......并且不需要处理matplotlib轴。

答案 1 :(得分:0)

您可以尝试:

fig = plt.figure(figsize=figsize)
ax1 = fig.add_subplot(111)
df.hist(bins=nbins, ax=ax1)
ax1.grid(b=False)