사골로 우려먹는 Python - Matplotlib이다.
컴퓨터를 정리하다가 예전에 했던 콘크리트 공시체 압축 실험 데이터를 저장했던 엑셀 파일이랑 이걸 연결한 파이썬 코드 파일을 발견했다. 파이썬 Matplotlib을 잘 모르던 뉴비 시절에 짰던 코드라 그런지 아주 그냥 기분 좋은 향기가 가득한 코드였다. 그래서 이번 기회에 그걸 다시 보완해서 코드를 짜봤다. 우선 사전 작업으로 import를 해주도록 하자.
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
사전 작업이 끝났으니 csv 파일을 읽어올 것이다. 본인은 모든 코드 파일이 D드라이브에 있다. csv 파일이 만약 C드라이브에 있으면 C드라이브 경로로 적어도 되니까 상관은 없다. 근데 다만 주의할거는 윈도우에서는 \표시를 /로 바꿔줘야 한다. 그리고 마지막에 csv 꼭 붙여야 한다. "같은 엑셀 파일인데 안 열려요" 이러지 말고 확장자가 xlsx이 아니고 csv인지 꼭 확인해야한다.
df = pd.read_csv('D:/Python Codes/csv files/Compressive Concrete.csv')
Pandas로 읽은 데이터를 한 번 본다.
뭐가 많은데 Stress(MPa) 와 Mean strain 만 쓸 것이다. Stress(MPa)는 왼쪽 끝(0시작)부터 8번째 column이고 Mean strain은 10번째 column이니까 다음 코드를 써서 그래프를 간단히 그려본다.
# x축
Mean_Strain = df.iloc[:, 10]
# y축
Stress = df.iloc[:, 8]
# plot 세팅
plt.figure(num=1, facecolor='white')
plt.plot(Mean_Strain, Stress, color="blue", linewidth=0.5)
plt.title('Stress-Mean strain')
plt.xlabel('Strain')
plt.ylabel('Stress(MPa)')
plt.grid()
plt.show()
#plt.savefig('stress-strain1.png')
나온 그래프를 확인해보니까 뭔가 이상하다. 우리가 아는 stress-strain curve와 다르게 실험이 끝나고 힘이 점점 빠지는 부분도 포함되서 그려져서 저렇게 나왔다. 그러면 최대값을 찾아서 한 번 그래프 데이터를 정리해보자.
#데이터 정제하여 최종 Stress - Strain 그래프 그리기
print(Mean_Strain.max(skipna=True))
print(Stress.max(skipna=True))
#Strain이 max인 점까지만 그리면 될 것 같음
print(df["Mean strain"].idxmax())
0.002464275
20.43040173
108
Mean strain의 최대값은 0.00246275이고 Stress의 최대값은 20.43040173이 나왔다. 아까 그래프를 보면 딱 Mean strain의 최대값까지 끊으면 우리가 아는 이론적인 ultimate strain(=0.003) 값에 근접하게 그래프를 자른 거니까 맞을 것이다. 그래서 Mean strain의 인덱스(index)를 찾아보니까 108번째가 나왔다.
아까 csv 파일에서 Mean strain과 Stress의 행(가로)을 0행부터 108행까지만 포함시키면 그래프가 딱 잘릴 것이다. 다음 코드를 보자.
# x축
Mean_Strain_ref = df.iloc[0:108+1, 10]
# y축
Stress_ref = df.iloc[0:108+1, 8]
# plot 세팅
plt.figure(num=1, facecolor='white')
plt.plot(Mean_Strain_ref, Stress_ref, color="blue", linewidth=0.5)
plt.title('Stress-Mean strain_ref')
plt.xlabel('Strain')
plt.ylabel('Stress(MPa)')
plt.grid()
plt.show()
#plt.savefig('stress-strain1.png')
최대 strain값까지 잘 나온 것을 확인할 수 있었다.
참고로 전체 코드에서는 시간과의 관계도 알아보려고 대충 짠게 있는데 참고용이다.
FIN.
'Python' 카테고리의 다른 글
Matplotlib color 색상표 SCI 논문 그림 (0) | 2024.07.16 |
---|