2015-05-13 5 views
0

Вот что я хочу сделать, графики гистограммы всех столбцов кадра данных, но без осей сетки. Ниже код работает, но предпочтительно я хотел бы более элегантное решение (например, передавая аргумент Hist)Как сделать оси сетки невидимыми для pandas dataframe 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) 

ответ

0

Вы можете попробовать:

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

К сожалению, это не работает, я получаю «UserWarning: Для вывода нескольких сюжетных, фигура, содержащая пройденные оси очищается „очищается“, UserWarning» , а затем сюжет, который выводится по-прежнему имеет ось –

1

Даже эта нить своего рода старый, я бы хотел добавить рабочее решение, потому что у меня была такая же проблема.

По крайней мере, в панд 0,18

df.hist() принимает все возможные Plotting ключевые слова из pandas.DataFrame.plot

df.hist(grid=False) 

работы легко .. и нет необходимости иметь дело с осями Matplotlib ,

Смежные вопросы