matplotlib 히스토그램의 세로축과 가로축이 기분 나쁘기 때문에 좋은 느낌
16864 단어 파이썬matplotlib
hist의 세로축과 가로축
예로서 다음과 같은 그래프를 보여드리겠습니다.
%matplotlib inline
import matplotlib.pyplot as plt
from scipy import stats
norm_rvs = stats.norm.rvs(loc=50, scale=30, size=100, random_state=0)
plt.hist(norm_rvs, bins=10, alpha=0.5, ec='navy')
plt.show()
이것을 보면,
%matplotlib inline
import matplotlib.pyplot as plt
from scipy import stats
norm_rvs = stats.norm.rvs(loc=50, scale=30, size=100, random_state=0)
plt.hist(norm_rvs, bins=10, alpha=0.5, ec='navy')
plt.show()
라는 것입니다.
세로축의 눈금을 정수로 만들고 싶습니다.
다음과 같이 히스토그램 막대의 틈과 높이에 대한 정보를 얻을 수 있습니다.
Y, X, _ = plt.hist(norm_rvs, bins=10, alpha=0.5, ec='navy')
print(X)
print(Y)
plt.show()
[-26.58969448 -12.12146116 2.34677216 16.81500548 31.2832388
45.75147212 60.21970544 74.68793876 89.15617208 103.6244054
118.09263872]
[ 1. 5. 7. 13. 17. 18. 16. 11. 7. 5.]
그 정보를 이용해 세로축을 정수로 해 봅니다.
import numpy as np
Y, X, _ = plt.hist(norm_rvs, bins=10, alpha=0.5, ec='navy')
y_max = int(max(Y)) + 1
plt.yticks(np.arange(0, y_max, 2)) # 1刻みにしても見にくいので2刻みにします
plt.show()
막대의 구분을 좋은 느낌으로 하고 싶다
가로축 범위를 지정하여 bin의 개수를 좋은 느낌으로 조정합니다.
Y, X, _ = plt.hist(norm_rvs, bins=13, alpha=0.5, ec='navy', range=(-10, 120))
print(X)
print(Y)
y_max = int(max(Y)) + 1
plt.yticks(np.arange(0, y_max, 2))
plt.show()
[-10. 0. 10. 20. 30. 40. 50. 60. 70. 80. 90. 100. 110. 120.]
[ 3. 5. 6. 10. 11. 9. 15. 13. 9. 6. 5. 5. 2.]
여러 히스토그램을 좋은 느낌으로 만들고 싶습니다.
이제 여러 히스토그램을 나란히 비교하고 싶을 때가 있습니다.
norm_rvs2 = stats.norm.rvs(loc=75, scale=55, size=100, random_state=0)
plt.hist(norm_rvs, bins=10, alpha=0.5, ec='navy')
plt.hist(norm_rvs2, bins=10, alpha=0.5, ec='red')
plt.show()
이런 식으로 기분 나쁜 요~! 라는 경향이 있습니다. 이것도 똑같이 좋은 느낌으로 해 봅시다.
bins = 20
range=(-50, 200)
Y1, X1, _ = plt.hist(norm_rvs, bins=bins, alpha=0.5, ec='navy', range=range)
Y2, X2, _ = plt.hist(norm_rvs2, bins=bins, alpha=0.5, ec='red', range=range)
y_max = int(max(max(Y1), max(Y2))) + 1
plt.yticks(np.arange(0, y_max, 2))
plt.show()
개인적으로는, 다음과 같이 세로로 늘어놓는 편을 좋아합니다.
bins = 20
range=(-50, 200)
fig, axes = plt.subplots(nrows=2, ncols=1, figsize=(8,8))
Y1, X1, _ = axes[0].hist(norm_rvs, bins=bins, alpha=0.5, ec='navy', range=range)
Y2, X2, _ = axes[1].hist(norm_rvs2, bins=bins, alpha=0.5, ec='red', range=range)
y_max = int(max(max(Y1), max(Y2))) + 1
axes[0].set_ylim([0, y_max])
axes[1].set_ylim([0, y_max])
axes[0].set_yticks(np.arange(0, y_max, 2))
axes[1].set_yticks(np.arange(0, y_max, 2))
plt.show()
현장에서 이상입니다!
Reference
이 문제에 관하여(matplotlib 히스토그램의 세로축과 가로축이 기분 나쁘기 때문에 좋은 느낌), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/maskot1977/items/0a077540bf38ed970c22
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Y, X, _ = plt.hist(norm_rvs, bins=10, alpha=0.5, ec='navy')
print(X)
print(Y)
plt.show()
[-26.58969448 -12.12146116 2.34677216 16.81500548 31.2832388
45.75147212 60.21970544 74.68793876 89.15617208 103.6244054
118.09263872]
[ 1. 5. 7. 13. 17. 18. 16. 11. 7. 5.]
import numpy as np
Y, X, _ = plt.hist(norm_rvs, bins=10, alpha=0.5, ec='navy')
y_max = int(max(Y)) + 1
plt.yticks(np.arange(0, y_max, 2)) # 1刻みにしても見にくいので2刻みにします
plt.show()
가로축 범위를 지정하여 bin의 개수를 좋은 느낌으로 조정합니다.
Y, X, _ = plt.hist(norm_rvs, bins=13, alpha=0.5, ec='navy', range=(-10, 120))
print(X)
print(Y)
y_max = int(max(Y)) + 1
plt.yticks(np.arange(0, y_max, 2))
plt.show()
[-10. 0. 10. 20. 30. 40. 50. 60. 70. 80. 90. 100. 110. 120.]
[ 3. 5. 6. 10. 11. 9. 15. 13. 9. 6. 5. 5. 2.]
여러 히스토그램을 좋은 느낌으로 만들고 싶습니다.
이제 여러 히스토그램을 나란히 비교하고 싶을 때가 있습니다.
norm_rvs2 = stats.norm.rvs(loc=75, scale=55, size=100, random_state=0)
plt.hist(norm_rvs, bins=10, alpha=0.5, ec='navy')
plt.hist(norm_rvs2, bins=10, alpha=0.5, ec='red')
plt.show()
이런 식으로 기분 나쁜 요~! 라는 경향이 있습니다. 이것도 똑같이 좋은 느낌으로 해 봅시다.
bins = 20
range=(-50, 200)
Y1, X1, _ = plt.hist(norm_rvs, bins=bins, alpha=0.5, ec='navy', range=range)
Y2, X2, _ = plt.hist(norm_rvs2, bins=bins, alpha=0.5, ec='red', range=range)
y_max = int(max(max(Y1), max(Y2))) + 1
plt.yticks(np.arange(0, y_max, 2))
plt.show()
개인적으로는, 다음과 같이 세로로 늘어놓는 편을 좋아합니다.
bins = 20
range=(-50, 200)
fig, axes = plt.subplots(nrows=2, ncols=1, figsize=(8,8))
Y1, X1, _ = axes[0].hist(norm_rvs, bins=bins, alpha=0.5, ec='navy', range=range)
Y2, X2, _ = axes[1].hist(norm_rvs2, bins=bins, alpha=0.5, ec='red', range=range)
y_max = int(max(max(Y1), max(Y2))) + 1
axes[0].set_ylim([0, y_max])
axes[1].set_ylim([0, y_max])
axes[0].set_yticks(np.arange(0, y_max, 2))
axes[1].set_yticks(np.arange(0, y_max, 2))
plt.show()
현장에서 이상입니다!
Reference
이 문제에 관하여(matplotlib 히스토그램의 세로축과 가로축이 기분 나쁘기 때문에 좋은 느낌), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/maskot1977/items/0a077540bf38ed970c22
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
norm_rvs2 = stats.norm.rvs(loc=75, scale=55, size=100, random_state=0)
plt.hist(norm_rvs, bins=10, alpha=0.5, ec='navy')
plt.hist(norm_rvs2, bins=10, alpha=0.5, ec='red')
plt.show()
bins = 20
range=(-50, 200)
Y1, X1, _ = plt.hist(norm_rvs, bins=bins, alpha=0.5, ec='navy', range=range)
Y2, X2, _ = plt.hist(norm_rvs2, bins=bins, alpha=0.5, ec='red', range=range)
y_max = int(max(max(Y1), max(Y2))) + 1
plt.yticks(np.arange(0, y_max, 2))
plt.show()
bins = 20
range=(-50, 200)
fig, axes = plt.subplots(nrows=2, ncols=1, figsize=(8,8))
Y1, X1, _ = axes[0].hist(norm_rvs, bins=bins, alpha=0.5, ec='navy', range=range)
Y2, X2, _ = axes[1].hist(norm_rvs2, bins=bins, alpha=0.5, ec='red', range=range)
y_max = int(max(max(Y1), max(Y2))) + 1
axes[0].set_ylim([0, y_max])
axes[1].set_ylim([0, y_max])
axes[0].set_yticks(np.arange(0, y_max, 2))
axes[1].set_yticks(np.arange(0, y_max, 2))
plt.show()
Reference
이 문제에 관하여(matplotlib 히스토그램의 세로축과 가로축이 기분 나쁘기 때문에 좋은 느낌), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/maskot1977/items/0a077540bf38ed970c22텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)