2016-08-31 5 views
1

서로 옆에 두 개의 막대 그래프를 만들려고합니다. 내가matplotlib에서 왼쪽 x 축이 오른쪽 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() 

내가 한 X 음모하려는 음모를 설정하고있어 어떻게 다음 enter image description here

는 아래 그림과 같이 내 문제는 왼쪽 하나는 오른쪽에 하나를 확장하고 대한 x 라벨입니다 축에 각각 subplot을 표시하면 처음에는 min(df1["Age"])에서 max(df1["Age"])까지의 나이와 다른 x 축이 포함됩니다. 두 번째는 min(df2["Age"])부터 max(df2["Age"])까지의 연령대를 포함합니다. 어떻게해야합니까?

답변

3

첫 번째 서브 플로트에 ax1 = fig.add_subplot(1, 1, 1)을 추가하면 전체 그림이 채워질 수 있습니다. 두 번째 서브 플롯 ax2 = fig.add_subplot(1, 2, 2)은 왼쪽에 첫 번째 서브 플롯이있는 것처럼 오른쪽으로 확장됩니다 (없는 경우). 당신이이 줄거리, 폭 절반 그림 크기를 갖고 싶어 당신이해야하는 것은이 plt.subplots α- 함수를 사용하는 것입니다 할

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 

또 다른 깔끔한 방법을 사용하는 것입니다. 그러면 그림과 두 축이 하나의 호출로 작성됩니다.

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

다음은 잘못된 점을 보여주는 세 가지 이미지입니다. 첫 번째 그림은 코드에 ax1을 추가 한 결과입니다 (내 코드에는 없습니다!). 그런 다음 ax2를 추가하여 두 번째 그림을 얻습니다. 여기서 원래 ax1의 절반이 새로운 ax2로 덮여 있음을 알 수 있습니다. 그러나 세 번째 그림은 두 축을 나란히 보여 주며, 이는 내가 추측 한 것입니다.

명확화 편집 : plt.add_subplot(rows, cols, num)을 호출 할 때 num 매개 변수는 추가 할 subplot을 알려줍니다. 나는. rows = cols = 2 인 경우 num = 1은 왼쪽 상단에, num = 2은 오른쪽 상단, num = 3은 왼쪽 하단, num = 4은 오른쪽 하단에 해당합니다. 즉, 오른쪽 상단의 하위 그림 (2 x 2 격자로)에 fig.add_subplot(2, 2, 2)을 추가 할 수 있습니다 (아래 그림 4 참조).

Only ax1 added (, 필립스 : 사용자 코드에서 추가 만 AX1) enter image description here (그림 2 : 사용자 코드에서뿐만 아니라 AX2 추가) enter image description here (Fig3 : 적절한 방법으로 AX1과 AX2을 추가, 나란히) enter image description here (그림 4 : 오른쪽 상단의 하위 그림에만 fig.add_subplot(2, 2, 2)이 추가되었습니다 .2x2 눈금에는 여전히 빈 곳이 3 개 더 있습니다.)

관련 문제