파이썬 왕초보 Node2의 2열과 Node4의 6열의 데이터를 이용해서 그래프를 그려낸다음 Figures폴더 안에 저장

조회수 390회

이미지

이미지

이미지

안녕하세요 파이썬 과제가 어려워서 질문드립니다.

위 스크린샷과 같이 4개의 파일에는 각각 00번~20번 까지 Pushoveroutput 폴더가 있습니다. 이 폴더 안에는 다시 Node2와 Node4의 out파일이 있습니다. 이때 Node2의 2열과 Node4의 6열의 데이터를 이용해서 파이썬상의 코드를 만들어서 그래프를 그려낸다음 Figures폴더 안에 저장을 해야하는 과제인데요.

이 과정에서 for문을 이용해서 00번~20번의 그래프를 그리고 추가로 이21개의 그래프가 동시에 그려진 그래프까지 포함, 총 22개의 그래프를 Figures폴더에 저장할수 있는 코드가 궁금합니다.

import pandas as pd

import matplotlib.pyplot as plt

csv_test=pd.read_csv(r'C:\Users\Jeong Min\Desktop\Term\0.5H\0.5_00.csv')

print(csv_test)

저는 따로 0.5H폴더중 00번에서 따로 데이터를 추출해서 csv파일을 한개 만들어 봤고 이파일을 불러오기까지는 방법을 알겠으나, 그 다음을 잘 모르겠습니다.

1 답변

  • 흠. 아주 간단한 예제코드만 답변으로 달겠습니다.

    import pandas as pd
    import matplotlib.pyplot as plt
    
    
    root_dir = "PushoverOutput/"
    node2 = pd.read_csv(root_dir + "Node2_Dsp.out", header=None)
    node4 = pd.read_csv(root_dir + "Node4_Reaction.out", header=None)
    
    df = pd.DataFrame({"Curvature":node2.iloc[:,1], "Moment":node4.iloc[:,5]})
    
    print(df.to_markdown())
    
    df.plot.line(x="Curvature", y="Moment", grid=True)
    plt.savefig("Figures/result.jpg")
    
    ROOT - PushoverOutput - Node2_Dsp.out
                            Node4_Reaction.out
    
         - Figures        - result.jpg
         - script.py
    

    pandas DataFrame에서 몇번째 컬럼을 접근하기 위해서는 iloc 를 이용하면 됩니다. node2, node4 두 개의 데이터프레임에서 2번째 (인덱스로는 1), 6번째 (인덱스로는 5) 컬럼으로 조합하여 데이터프레임을 만듭니다. 그리고, 컬럼 두개짜리 데이터프레임에서 pandas의 plot 함수로 그래프를 그립니다.

    그리고는 마지막으로 해당 그래프를 plt.savefig 함수로 저장하는 겁니다. 여기서 조금 헷갈릴수는 있는데, pandas plot 함수가 내부적으로 matplotlib 을 렌더링에 사용하기 때문에 plt.savefig 입니다.

    그래프의 디테일을 조정하고 싶으면, matplotlib 을 좀 더 공부하면 됩니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)