막대그래프 만들기
조회수 3517회
저는 동일한 tick_label을 갖는 두 개의 막대그래프를 하나의 figure안에 그리고 싶습니다 ㅠㅠ 도와주세요..ㅠㅠㅠ
우선 제가 최종적으로 만들고자 하는 막대그래프의 예는 아래와 같습니다.
그리고 제가 하나의 막대그래프로 합치고자 하는 두 개의 실제 막대그래프는 아래와 같습니다.
domain_percent = [11.167, 17.973, 44.765, 21.058, 5.037]
X_name = ['Very low', 'Low', 'Moderate', 'High', 'Very high']
n_group = len(X_name)
index = np.arange(n_group)
bar_width = 0.35
pylab.figure(1)
plt.bar(index, domain_percent, bar_width, tick_label=X_name, align='center')
plt.xlabel('Landslide susceptibility zones')
plt.ylabel('Percent of each class')
domain_percent = [14.686, 11.746, 58.686, 14.534, 0.348]
X_name = ['Very low', 'Low', 'Moderate', 'High', 'Very high']
n_group = len(X_name)
index = np.arange(n_group)
bar_width = 0.35
pylab.figure(2)
plt.bar(index, domain_percent, bar_width, tick_label=X_name, align='center')
plt.xlabel('Landslide susceptibility zones')
plt.ylabel('Percent of each class')
어떻게 하면 예시 그림처럼 동일한 tick_label을 갖는 두 개의 막대그래프를 하나의 figure안에 그릴 수 있을까요 ㅠㅠㅠ 도와주세요 ㅠㅠ
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
plt.bar의 첫번째 argument를 조정해주세요.
import numpy as np from matplotlib import pyplot as plt import pylab domain_percent1 = [11.167, 17.973, 44.765, 21.058, 5.037] domain_percent2 = [14.686, 11.746, 58.686, 14.534, 0.348] X_name = ['Very low', 'Low', 'Moderate', 'High', 'Very high'] n_group = len(X_name) index = np.arange(n_group) bar_width = 0.35 pylab.figure(1) plt.bar(index, domain_percent1, bar_width, tick_label=X_name, align='center') plt.bar(bar_width+index, domain_percent2, bar_width, tick_label=X_name, align='center') #추가된 곳 plt.xlabel('Landslide susceptibility zones') plt.ylabel('Percent of each class') plt.show()
과 같이 사용하시면 될 것 같습니다.
확장성을 따진다면, 다음과 같이 for 문을 사용해도 괜찮을 것 같습니다.
import numpy as np from matplotlib import pyplot as plt import pylab domain_percent1 = [11.167, 17.973, 44.765, 21.058, 5.037] domain_percent2 = [14.686, 11.746, 58.686, 14.534, 0.348] domain_percent3 = [11.167, 17.973, 44.765, 21.058, 5.037] domain_percents = [domain_percent1,domain_percent2, domain_percent3] X_name = ['Very low', 'Low', 'Moderate', 'High', 'Very high'] n_group = len(X_name) index = np.arange(n_group) bar_width = 0.15 pylab.figure(1) for idx, i in enumerate(domain_percents): pos = index + bar_width*idx plt.bar(pos, i, bar_width, tick_label=X_name, align='center') plt.xlabel('Landslide susceptibility zones') plt.ylabel('Percent of each class') plt.show()
-
(•́ ✖ •̀)
알 수 없는 사용자
- 너무 감사합니다^^ for문을 사용하니 훨씬 깔끔하네요~! 알 수 없는 사용자 2018.3.27 17:39
- 답변이 좋았다면 답변을 채택해주세요~ 감사합니다~ 알 수 없는 사용자 2018.3.27 17:40
-
댓글 입력