복붙노트

[PYTHON] Python pandas, 여러 행의 플로팅 옵션

PYTHON

Python pandas, 여러 행의 플로팅 옵션

팬더 데이터 프레임에서 여러 라인을 플롯하고 각 라인마다 다른 옵션을 설정하고 싶습니다. 나는 뭔가를하고 싶다.

testdataframe=pd.DataFrame(np.arange(12).reshape(4,3))
testdataframe.plot(style=['s-','o-','^-'],color=['b','r','y'],linewidth=[2,1,1])

그러면 몇 가지 오류 메시지가 나타납니다.

또한 나에게 이상한 것 같은 더 많은 것들이있다.

누군가가 도울 수 있기를 바랍니다. 감사합니다.

해결법

  1. ==============================

    1.너 너무 가까워!

    너 너무 가까워!

    스타일 목록에서 색상을 지정할 수 있습니다.

    import numpy as np
    import matplotlib.pyplot as plt
    import pandas as pd
    
    testdataframe = pd.DataFrame(np.arange(12).reshape(4,3), columns=['A', 'B', 'C'])
    styles = ['bs-','ro-','y^-']
    linewidths = [2, 1, 4]
    fig, ax = plt.subplots()
    for col, style, lw in zip(testdataframe.columns, styles, linewidths):
        testdataframe[col].plot(style=style, lw=lw, ax=ax)
    

    플롯 메소드는 matplotlib.axes 객체를 취할 수 있으므로 다음과 같이 여러 번 호출 할 수 있습니다 (원하는 경우).

    import numpy as np
    import matplotlib.pyplot as plt
    import pandas as pd
    
    testdataframe1 = pd.DataFrame(np.arange(12).reshape(4,3), columns=['A', 'B', 'C'])
    testdataframe2 = pd.DataFrame(np.random.normal(size=(4,3)), columns=['D', 'E', 'F'])
    styles1 = ['bs-','ro-','y^-']
    styles2 = ['rs-','go-','b^-']
    fig, ax = plt.subplots()
    testdataframe1.plot(style=styles1, ax=ax)
    testdataframe2.plot(style=styles2, ax=ax)
    

    이 경우 실용적이지는 않지만 나중에 개념이 유용 할 수 있습니다.

  2. ==============================

    2.데이터 프레임 테스트 데이터 프레임 고려

    데이터 프레임 테스트 데이터 프레임 고려

    testdataframe = pd.DataFrame(np.arange(12).reshape(4,3))
    
    print(testdataframe)
    
       0   1   2
    0  0   1   2
    1  3   4   5
    2  6   7   8
    3  9  10  11
    

    스타일을 아래 정의 된 스타일에서와 같이 단일 문자열 목록에 결합 할 수 있습니다. 또한 선 너비를 lws로 정의 할 것입니다.

    styles=['bs-', 'ro-', 'y^-']
    lws = [2, 1, 1]
    

    testdataframe에서 plot 메서드를 사용하여 목록 스타일을 style 매개 변수에 전달할 수 있습니다. 우리는 사전을 통과 할 수도 있었을 것입니다 (그리고 아마도 다른 것들도).

    그러나 선 너비는 쉽게 처리되지 않습니다. 먼저 AxesSubplot 객체를 캡처하고 선 너비를 설정하는 선 속성을 반복합니다.

    ax = testdataframe.plot(style=styles)
    for i, l in enumerate(ax.lines):
        plt.setp(l, linewidth=lws[i])
    

  3. ==============================

    3.그래서 저는 그 대답이 같은 논쟁에서 색깔과 스타일을 전달하는 것에 있다고 생각합니다. 다음 예제는 pandas 0.19.2에서 작동합니다.

    그래서 저는 그 대답이 같은 논쟁에서 색깔과 스타일을 전달하는 것에 있다고 생각합니다. 다음 예제는 pandas 0.19.2에서 작동합니다.

    testdataframe=pd.DataFrame(np.arange(12).reshape(4,3))
    testdataframe.plot(style=['r*-','bo-','y^-'], linewidth=2.0)
    

    불행히도 matplotlib의 입력으로 여러 줄의 너비를 전달하는 것은 불가능합니다.

  4. from https://stackoverflow.com/questions/14178194/python-pandas-plotting-options-for-multiple-lines by cc-by-sa and MIT license