matplotlib自定义打印数据帧中的多列



我有一个带有多列的pandasDataFrame,我想为每列绘制histogram。我想有一个单独的直方图,并在绘制完成后将所有直方图放在一行中。

这是我的尝试:

fig, ax = plt.subplots(nrows=1, ncols=4, figsize=(20,5))
n_cols = ['a', 'b', 'c', 'd']
colors = ['#800000','#3C91E6','#59C9A5','#9BE564']
counter = 0
for j in range(4):
n, bins, patches = plt.hist(df[n_cols[counter]], 
bins=50, 
facecolor = '#2ab0ff', 
edgecolor='#169acf', 
linewidth=0.5, ax=ax[j])
n = n.astype('int') # it MUST be integer#
for i in range(len(patches)):
patches[i].set_facecolor(plt.cm.viridis(n[i]/max(n)))
# Make one bin stand out   
patches[47].set_fc('red') # Set color
patches[47].set_alpha(1) # Set opacity        
counter+=1
fig.suptitle('distributions', fontsize=18)

我得到一个inner() got multiple values for argument ax

但是,一个情节运作良好,没有任何问题。哪一个是循环中的部分:

Matplotlib的plot()不像pandas/seaborn那样采用ax参数。Matplotlib使用ax[j].plot()而不是plt.plot(ax=ax[j]):

n, bins, patches = ax[j].hist(df[n_cols[counter]], 
bins=50, 
facecolor = '#2ab0ff', 
edgecolor='#169acf', 
linewidth=0.5)

相关内容

  • 没有找到相关文章

最新更新