matplolib/기본&입문

'figsize'라는 속성값을 써서 크기 조정하고 타이틀 겹침 문제를 해결하기

JackSmith 2023. 10. 10.

다음과 같이 삼각함수와 역삼각함수를 플롯에 도식화하는 코드와 결과가 있다.

코드>

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-np.pi, np.pi, 200)
x2 = np.linspace(-1, 1, 200)
fig, axes = plt.subplots(3,2) #2행 2열

axes[0][0].plot(x, np.sin(x))
axes[0][0].set_title('Sine_func()')

axes[0][1].plot(x2, np.arcsin(x2))
axes[0][1].set_title('ArcSine_func()')

axes[1][0].plot(x, np.cos(x))
axes[1][0].set_title('Cosine_func()')

axes[1][1].plot(x2, np.arccos(x2))
axes[1][1].set_title('ArcCosine_func()')

axes[2][0].plot(x, np.tan(x))
axes[2][0].set_title('Tangent_func()')

axes[2][1].plot(x, np.arctan(x))
axes[2][1].set_title('ArcTangent_func()')

plt.show()

 

결과>

여기서 한가지 문제점은 서브플롯에 있는 제목들(플롯의 부제목들)이 겹치는 문제가 발생한다는 것이다. 이는 plt.subplot()를 써줄때, figsize속성을 이용해서 미리 그림에 대한 크기조정을 해주지 않았기 때문에 발생한 이슈다. 파이썬으로 그래프 그릴때 생각보다 겹침문제가 자주 발생하니, 이 속성에 대해 알아둘 필요가 있다.

 

수정한 코드는 다음과 같다.

fig, axes = plt.subplots(3,2, figsize=(8,12)) #2행 2열

 

그에 따른 결과를 보면 다음과 같다.

 


이번에는 네가지 종류의 히스토그램을 그려보도록 하자!

히스토그램의 종류로는 'bar', 'barstacked', 'step', 'stepfilled' 이렇게 네가지가 있다.

다음과 같이 가중치 배열을 주자.

weight = [68, 81, 64, 56, 78, 74, 61, 77, 66, 68, 59, 71,
        80, 59, 67, 81, 69, 73, 69, 74, 70, 65]
weight2 = [52, 67, 84, 66, 58, 78, 71, 57, 76, 62, 51, 79,
        69, 64, 76, 57, 63, 53, 79, 64, 50, 61]

 

이를 기반으로 코드를 구현해보면,

import matplotlib.pyplot as plt

weight = [68, 81, 64, 56, 78, 74, 61, 77, 66, 68, 59, 71,
        80, 59, 67, 81, 69, 73, 69, 74, 70, 65]
weight2 = [52, 67, 84, 66, 58, 78, 71, 57, 76, 62, 51, 79,
        69, 64, 76, 57, 63, 53, 79, 64, 50, 61]

fig,axes = plt.subplots(2,2, figsize=(8,8))

axes[0][0].hist((weight, weight2), histtype='bar')
axes[0][0].set_title('histtype - bar')


axes[0][1].hist((weight, weight2), histtype='barstacked')
axes[0][1].set_title('histtype - barstacked')

axes[1][0].hist((weight, weight2), histtype='step')
axes[1][0].set_title('histtype - step')


axes[1][1].hist((weight, weight2), histtype='stepfilled')
axes[1][1].set_title('histtype - stepfilled')

plt.show()

 

그 결과는 다음과 같다.

 

 

댓글