Post

산점도 그래프 그리기

논문용 그래프 - 산점도

논문이나 혹은 회사에서 PPT로 두 개의 값 간의 선형적인 관계를 산점도로 표기하고 싶을수 있다. 또한, 두 값이 선형적인 관계가 있는지 간단히 체크하고 싶을 수 있다. 그러면 아래의 코드를 쓰면된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.family'] ='Malgun Gothic'
plt.rcParams['axes.unicode_minus'] =False

# 데이터 파일 불러오기 (탭 또는 콤마 구분자에 맞춰 sep 인자 조정)
df = pd.read_csv('data.csv', sep=',')
# 만약 콤마분리(CSV)라면 sep=',' 로 변경하세요.

# 컬럼 이름이 '거리'와 '시간(ns)'인지 확인
print(df.columns)

# 상관계수 계산 (Pearson)
corr = df['거리'].corr(df['recall_rate'])
print(f"거리와 시간 간의 Pearson 상관계수: {corr:.4f}")

# 산점도 그리기
plt.figure(figsize=(8,6))
plt.scatter(df['거리'], df['recall_rate'], alpha=0.6)
plt.xlabel('거리')
plt.ylabel('recall_rate')
plt.title('거리 vs recall_rate 산점도')
plt.grid(True)
plt.tight_layout()
plt.show()

위 파일을 쓰기 위해서는 동일한 디렉터리에 data.csv파일이 있어야한다. 포맷은 아래와 같다.

1
2
3
4
5
6
7
8
9
10
11
거리,recall_rate
211986.000000,0.000000
163820.000000,0.000000
209304.000000,0.000000
217040.000000,0.000000
239705.000000,0.000000
165017.000000,0.000000
184932.000000,0.000000
240798.000000,0.000000
205759.000000,0.000000
...

※ 참고

pycharm 사용시 아래와 같은 메세지와 함께 그래프가 안나오는 경우가 있다.

1
AttributeError: module 'backend_interagg' has no attribute 'FigureCanvas'

이럴때는 pycharm에서 figure를 내부에 띄우지 못하도록 disable할 경우 에러를 피할 수 있다 settings - tools - Python scientific - show plots in windows를 체크 해제해주면 외부로 잘 뜨게 된다.

참고문헌

This post is licensed under CC BY 4.0 by the author.