2016-08-31 8 views
1

私はお互いの隣に2つのヒストグラムを作成しようとしています。私の問題は、以下に示すように、左1、右の1まで延長されるためxラベルです: enter image description herematplotlibで左のx軸が右のx軸に伸びないようにする方法は?

ここ

私は1つのxをプロットしたい私は、プロット

import pandas as pd 
import matplotlib.pyplot as plt 

fig = plt.figure(figsize=(16,8)) 
ax1 = fig.add_subplot(1,1,1) 
ax1.set_xlim([min(df1["Age"]),max(df1["Age"])]) 
ax1 = df1["Age"].hist(color="cornflowerblue") 
ax2 = fig.add_subplot(1,2,2) 
ax2.set_xlim([min(df2["Age"]),max(df2["Age"])]) 
ax2 = df2["Age"].hist(color="seagreen") 
plt.show() 

を設定してい方法です軸ごとにsubplotを表示するので、最初のものにはmin(df1["Age"])からmax(df1["Age"])までの年齢と別のx軸が含まれます。 2番目のものにはmin(df2["Age"])からmax(df2["Age"])までの年齢が含まれます。どうすればいいですか

答えて

3

問題は、最初のサブプロットがax1 = fig.add_subplot(1, 1, 1)で追加されていることが、図全体を埋めることになります。 2番目のサブプロットax2 = fig.add_subplot(1, 2, 2)は、左側に最初のサブプロットがあるかのように、右側に広がります(存在しない)。あなたが2つのサブプロット、幅の半分の数値サイズを、持っているしたい場合は、あなたがやるべきこと、それはplt.subplots -functionを使用することで行うこと

fig = plt.figure() 
ax1 = fig.add_subplot(1, 2, 1) # first subplot, to the left 
ax2 = fig.add_subplot(1, 2, 2) # second subplot, to the right 

もうすっきり方法を使用することです。それで図形と2つの軸が1回の呼び出しで作成されます。

fig, (ax1, ax2) = plt.subplots(1, 2) 

以下は、何が問題になるかを示す3つの画像です。最初の図は、コード内にax1を追加した結果です(私のコードではありません!)。次に、ax2を追加して、元のax1の半分が新しいax2で覆われていることが分かります。しかし、3つ目の図は2つの軸を並べて示しています。これは私が推測するものです。

明確化編集:plt.add_subplot(rows, cols, num)を呼び出すとき、num-parameterは、どのサブプロットを追加するかを指示します。私。 rows = cols = 2の場合はnum = 1が左上、num = 2が右上、num = 3が左下、num = 4が右下に対応します。つまり、右上のサブプロット(2 x 2グリッド内)にfig.add_subplot(2, 2, 2)を追加できます(下の図4を参照)。

Only ax1 added (FIG1:コードから追加のみAX1) enter image description here (FIG2:コードから、ならびにAX2を追加) enter image description here (Fig3:適切な方法でAX1とAX2の追加、並べ) enter image description here (図4:右上のサブプロットのみが追加され、fig.add_subplot(2, 2, 2)と表示されます.2×2グリッドにはさらに3つの空白が残ります)

関連する問題