Plotly : 월별 및 연간 평균 드롭 다운 옵션을 만드는 방법은 무엇입니까?

Jeff Coldplume

Plotly에서 드롭 다운을 만들어 원래 일일 시계열을 월 평균 및 연간 평균으로 다시 샘플링하도록 전환하려고합니다.

요약하면 드롭 다운에 3 가지 옵션이 표시됩니다. 하나는 원래의 일일 시간 단계, 두 번째는 월별 평균 리샘플링 된 일일 데이터, 세 번째는 선택할 수있는 연간 평균 값입니다.

지금까지 내가 가지고있는 모든 코드는 다음과 같습니다.

import pandas as pd
import numpy as np
from numpy import random
import plotly.express as px
import cufflinks as cf

random.seed(30)

df = pd.DataFrame({
    "Site 1": np.random.rand(366),
    "Site 2": np.random.rand(366),
    "Site 3": np.random.rand(366),
    "Site 4": np.random.rand(366),
    "Site 5": np.random.rand(366),
    "Site 6": np.random.rand(366)})

idx = pd.date_range(start='2000-01-01', end='2000-12-31',freq ='D')
df = df.set_index(idx)

dfmon = df.resample('M').mean()
dfyr = df.resample('AS').mean()

df.index.names = ['Date']
df.reset_index(inplace= True)

dfmon.index.names = ['Date']
dfmon.reset_index(inplace= True)

dfyr.index.names = ['Date']
dfyr.reset_index(inplace= True)

print(df)
dfd_long = dfmon.melt(id_vars='Date',var_name='SiteID', value_name='Values')
dfm_long = dfmon.melt(id_vars='Date',var_name='SiteID', value_name='Values')
dfyr_long = dfyr.melt(id_vars='Date',var_name='SiteID', value_name='Values')

fig = px.line(dfd_long, x=dfd_long['Date'], y="Values", color="SiteID", hover_name="SiteID")

fig.update_layout(updatemenus=list([
    dict(
        buttons=list([   
            dict(
                args=[{'x': [dfm_long.index], 'y': [dfm_long.Values]}],
                label='Monthly',
                method='restyle'
            ),
            dict(
                args=[{'x': [dfyr_long.index], 'y': [dfyr_long.Values]}],
                label='Yearly',
                method='restyle'
            ),
            dict(
                args=[{'x': [dfd_long.index], 'y': [dfd_long.Values]}],
                label='Daily',
                method='restyle'
            )
        ]))]))

fig.show()

월별 및 연간 드롭 다운으로 리샘플링하는 것과 관련하여 올바른 방법으로 진행하고 있습니까? 이를 위해 길거나 넓은 데이터 형식을 사용해야합니까? 이 코드로 드롭 다운을 클릭하면 예상했던 6 줄 중 한 줄만 표시됩니다. 이것이 제대로 작동하려면 각 사이트에 대해 별도의 드롭 다운이 필요합니까?

지금까지 Plotly에 대한 경험이 제한되어 있으므로 제공 할 수있는 모든 도움이나 제안이 큰 도움이 될 것입니다!

도움을 주셔서 미리 감사드립니다!

Vestland

다음은 이러한 옵션에 대해 다음 세 가지 그림을 제공하는 전체 설정입니다.

['daily', 'monthly', 'yearly']

나는 수치를 조금 더 흥미롭게 만들기 위해 약간 비틀어 재현 가능한 데이터에 대한 설정을 사용했습니다 . 예를 들어,을 사용 "Site 1": np.random.rand(366)하는 동안 np.random.randint(-1, 2, 366).cumsum(). 이것은 잡음보다는 (확률 적) 추세를 나타낼 가능성이있는 누적 된 계열을 생성합니다. 그리고 이것은 그림에서 일어나는 일, 특히 일일 데이터를 보여주는 버전을 더 쉽게 볼 수있게합니다.

플롯 1-매일

여기에 이미지 설명 입력

플롯 2-매월

여기에 이미지 설명 입력

플롯 3a-산점 추적이있는 연간 데이터

여기에 이미지 설명 입력

이거 좀 웃기지 않나요? 마지막 옵션에 대해 다음과 같이 변경하려면 알려주십시오.

플롯 3b-막대 추적이있는 연간 데이터

여기에 이미지 설명 입력

그리고 주석이 그 내용을 다루지 않는 경우 전체 코드 스 니펫에서 어떤 일이 벌어지고 있는지에 대한 자세한 내용을 원하면 알려주십시오.

import pandas as pd
import numpy as np
from numpy import random
import plotly.express as px
import cufflinks as cf
import plotly.graph_objects as go

random.seed(30)

df = pd.DataFrame({
    "Site 1": np.random.randint(-1, 2, 366).cumsum(),
    "Site 2": np.random.randint(-1, 2, 366).cumsum(),
    "Site 3": np.random.randint(-1, 2, 366).cumsum(),
    "Site 4": np.random.randint(-1, 2, 366).cumsum(),
    "Site 5": np.random.randint(-1, 2, 366).cumsum(),
    "Site 6": np.random.randint(-1, 2, 366).cumsum()})

idx = pd.date_range(start='2000-01-01', end='2000-12-31',freq ='D')
df = df.set_index(idx)

dfmon = df.resample('M').mean()
dfyr = df.resample('AS').mean()

df.index.names = ['Date']
df.reset_index(inplace= True)

dfmon.index.names = ['Date']
dfmon.reset_index(inplace= True)

dfyr.index.names = ['Date']
dfyr.reset_index(inplace= True)

fig = go.Figure()
dfs = {'daily':df, 'monthly': dfmon, 'yearly' :dfyr}

# your setup this far...

# ... here is where I've added my contributions:

# specify visibility for traces accross dataframes
frames = len(dfs) # number of dataframes organized in  dict
columns = len(dfs['daily'].columns) - 1 # number of columns i df, minus 1 for Date
scenarios = [list(s) for s in [e==1 for e in np.eye(frames)]]
visibility = [list(np.repeat(e, columns)) for e in scenarios] 

# container for buttons
buttons = []

# iterate of dataframes in dfs:
# - i is used to reference visibility attributes
# - k is the name for each dataframe
# - v is the dataframe itself
for i, (k, v) in enumerate(dfs.items()):
    print(i)
    for c, column in enumerate(v.columns[1:]):
        fig.add_scatter(name = column,
                        x = v['Date'],
                        y = v[column], 
                        visible=True if k=='daily' else False # 'daily' values are shown from the start
                       )
                
    # one button per dataframe to trigger the visibility
    # of all columns / traces for each dataframe
    button =  dict(label=k,
                   method = 'restyle',
                   args = ['visible',visibility[i]])
    buttons.append(button)

# include dropdown updatemenu in layout
fig.update_layout(updatemenus=[dict(type="dropdown",
                                    direction="down",
                                    buttons = buttons)])
fig.show()

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Plotly : 다중 인덱스 드롭 다운 옵션을 만드는 방법은 무엇입니까?

분류에서Dev

D3.js : 연도 및 월별로 그룹화 된 평균을 찾는 방법은 무엇입니까?

분류에서Dev

JQuery Datepicker 월 및 연도 표시를 드롭 다운으로 변경하는 방법은 무엇입니까?

분류에서Dev

옵션 드롭 다운을 사용하여 PHP 여러 양식을 만드는 방법은 무엇입니까?

분류에서Dev

월별 날짜 시간 및 플롯 값에 대한 저장소를 만드는 방법은 무엇입니까?

분류에서Dev

Plotly : Pandas 데이터 프레임에서 드롭 다운을 사용하는 방법은 무엇입니까?

분류에서Dev

Plotly : Pandas 데이터 프레임에서 드롭 다운을 사용하는 방법은 무엇입니까?

분류에서Dev

셀레늄의 일, 월 및 연도 드롭 다운 옵션에 대한 드롭 다운에서 값을 선택할 수 없습니다.

분류에서Dev

Plotly : 드롭 다운 메뉴를 구성하는 방법은 무엇입니까?

분류에서Dev

드롭 다운을 동적으로 만드는 방법은 무엇입니까?

분류에서Dev

JQgrid 내에서 드롭 다운을 만드는 방법은 무엇입니까?

분류에서Dev

코드에 연결된 드롭 다운에 대한 정적 옵션 목록을 구성하는 방법은 무엇입니까?

분류에서Dev

불규칙한 시간 그래프에 대한 평균 선을 만드는 방법은 무엇입니까?

분류에서Dev

드롭 다운 옵션에서 "입력"태그 값을 얻는 방법은 무엇입니까?

분류에서Dev

다른 드롭 다운에서 선택하지 않은 옵션을 사용하여 드롭 다운을 채우는 방법은 무엇입니까?

분류에서Dev

Tampermonkey로 Google Form의 드롭 다운 및 텍스트 입력을 채우는 방법은 무엇입니까?

분류에서Dev

드롭 다운 메뉴에서 동적으로 옵션을 선택하는 방법은 무엇입니까?

분류에서Dev

Python의 동적 드롭 다운에서 옵션 값을 추출 / 긁는 방법은 무엇입니까?

분류에서Dev

Codeigniter의 드롭 다운 메뉴에서 옵션 값을 저장하는 방법은 무엇입니까?

분류에서Dev

드롭 다운 목록에서 선택한 옵션을 계속 표시하는 방법은 무엇입니까?

분류에서Dev

jquery로 드롭 다운 옵션을 선택하는 방법은 무엇입니까?

분류에서Dev

드롭 다운 목록 끝에 특정 옵션을 유지하는 방법은 무엇입니까?

분류에서Dev

드롭 다운 옵션에서 밑줄 규칙을 제거하는 방법은 무엇입니까?

분류에서Dev

Angular Directive에서 선택 옵션 드롭 다운을 사용하는 방법은 무엇입니까?

분류에서Dev

Angular Directive에서 선택 옵션 드롭 다운을 사용하는 방법은 무엇입니까?

분류에서Dev

yii 드롭 다운에서 선택한 옵션을 표시하는 방법은 무엇입니까?

분류에서Dev

Selenium Webdriver에서 드롭 다운 옵션을 선택하는 방법은 무엇입니까?

분류에서Dev

선택> 옵션 드롭 다운에서 항목을 숨기는 방법은 무엇입니까?

분류에서Dev

선택 드롭 다운에서 "옵션"값의 스타일을 지정하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    Plotly : 다중 인덱스 드롭 다운 옵션을 만드는 방법은 무엇입니까?

  2. 2

    D3.js : 연도 및 월별로 그룹화 된 평균을 찾는 방법은 무엇입니까?

  3. 3

    JQuery Datepicker 월 및 연도 표시를 드롭 다운으로 변경하는 방법은 무엇입니까?

  4. 4

    옵션 드롭 다운을 사용하여 PHP 여러 양식을 만드는 방법은 무엇입니까?

  5. 5

    월별 날짜 시간 및 플롯 값에 대한 저장소를 만드는 방법은 무엇입니까?

  6. 6

    Plotly : Pandas 데이터 프레임에서 드롭 다운을 사용하는 방법은 무엇입니까?

  7. 7

    Plotly : Pandas 데이터 프레임에서 드롭 다운을 사용하는 방법은 무엇입니까?

  8. 8

    셀레늄의 일, 월 및 연도 드롭 다운 옵션에 대한 드롭 다운에서 값을 선택할 수 없습니다.

  9. 9

    Plotly : 드롭 다운 메뉴를 구성하는 방법은 무엇입니까?

  10. 10

    드롭 다운을 동적으로 만드는 방법은 무엇입니까?

  11. 11

    JQgrid 내에서 드롭 다운을 만드는 방법은 무엇입니까?

  12. 12

    코드에 연결된 드롭 다운에 대한 정적 옵션 목록을 구성하는 방법은 무엇입니까?

  13. 13

    불규칙한 시간 그래프에 대한 평균 선을 만드는 방법은 무엇입니까?

  14. 14

    드롭 다운 옵션에서 "입력"태그 값을 얻는 방법은 무엇입니까?

  15. 15

    다른 드롭 다운에서 선택하지 않은 옵션을 사용하여 드롭 다운을 채우는 방법은 무엇입니까?

  16. 16

    Tampermonkey로 Google Form의 드롭 다운 및 텍스트 입력을 채우는 방법은 무엇입니까?

  17. 17

    드롭 다운 메뉴에서 동적으로 옵션을 선택하는 방법은 무엇입니까?

  18. 18

    Python의 동적 드롭 다운에서 옵션 값을 추출 / 긁는 방법은 무엇입니까?

  19. 19

    Codeigniter의 드롭 다운 메뉴에서 옵션 값을 저장하는 방법은 무엇입니까?

  20. 20

    드롭 다운 목록에서 선택한 옵션을 계속 표시하는 방법은 무엇입니까?

  21. 21

    jquery로 드롭 다운 옵션을 선택하는 방법은 무엇입니까?

  22. 22

    드롭 다운 목록 끝에 특정 옵션을 유지하는 방법은 무엇입니까?

  23. 23

    드롭 다운 옵션에서 밑줄 규칙을 제거하는 방법은 무엇입니까?

  24. 24

    Angular Directive에서 선택 옵션 드롭 다운을 사용하는 방법은 무엇입니까?

  25. 25

    Angular Directive에서 선택 옵션 드롭 다운을 사용하는 방법은 무엇입니까?

  26. 26

    yii 드롭 다운에서 선택한 옵션을 표시하는 방법은 무엇입니까?

  27. 27

    Selenium Webdriver에서 드롭 다운 옵션을 선택하는 방법은 무엇입니까?

  28. 28

    선택> 옵션 드롭 다운에서 항목을 숨기는 방법은 무엇입니까?

  29. 29

    선택 드롭 다운에서 "옵션"값의 스타일을 지정하는 방법은 무엇입니까?

뜨겁다태그

보관