сюжетная анимация на рамке scattermapbox - PullRequest
0 голосов
/ 12 февраля 2019

У меня фактически это работало на меня на минуту, но теперь я не могу понять, как вернуться к рабочей форме.

Что касается анимации (Plotly / Python), мой вопрос вокруг frame .Каков правильный формат для каждого кадра, когда он должен отображаться как анимация, когда он представляет собой «scattermapbox»?Я думаю, что здесь у меня что-то не так.

Я заимствую код отсюда - https://plot.ly/~empet/14825/scattermapbox-animation-forum-question/#/

Этот же код прекрасно работает, просто запустив этот рисунок без анимации.После установки переменных данных и макета - это работает


fig = dict(data=data, layout=layout)
py.iplot(fig, filename='MultipleMapbox')

Однако, когда я запускаю приведенный ниже код, я получаю сообщение об ошибке.Вот полный код -

import pandas as pd

import plotly.plotly as py
from plotly.graph_objs import *
#from plotly.grid_objs import Grid, Column
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot
mapbox_access_token = ''

filename = "https://raw.githubusercontent.com/spencerlawrence36/basic/master/places.csv"
df = pd.read_csv(filename, encoding='utf-8')
df = df.head(100)
df.columns
data = [dict(type='scattermapbox',
               lat=[33.49],
               lon=[-112.05],
               mode='markers',
               marker=dict(size=15, color='#000000')
            )
        ]

layout = dict(
    autosize=True,
    hovermode='closest',
    mapbox=dict(accesstoken=mapbox_access_token,
                bearing=0,
                center=dict(lat=33.49,
                            lon=-112.05
                            ),
                pitch=0,
                zoom=10,
                style='light'
                )
            )
lats=list(df['lat'])
lons=list(df['lng'])
frames=[dict(data= [dict(lat=lats[:k+1],
                         lon=lons[:k+1])
                   ],
             traces= [0],
             name='frame{}'.format(k)       
            ) for k  in  range(1, len(df))]

sliders=[dict(steps= [dict(method= 'animate',
                           args= [[ 'frame{}'.format(k) ],
                                  dict(mode= 'immediate',
                                  frame= dict( duration=200, redraw= False ),
                                           transition=dict( duration= 0)
                                          )
                                    ],
                            label='{:d}'.format(k)
                             ) for k in range(len(df))], 
                transition= dict(duration= 0 ),
                x=0,#slider starting position  
                y=0, 
                currentvalue=dict(font=dict(size=12), 
                                  prefix='Point: ', 
                                  visible=True, 
                                  xanchor= 'center'
                                 ),  
                len=1.0)#slider length)
           ]
layout.update(updatemenus=[dict(type='buttons', showactive=False,
                                y=0,
                                x=1.05,
                                xanchor='right',
                                yanchor='top',
                                pad=dict(t=0, r=10),
                                buttons=[dict(label='Play',
                                              method='animate',
                                              args=[None, 
                                                    dict(frame=dict(duration=200, 
                                                                    redraw=False),
                                                         transition=dict(duration=0),
                                                         fromcurrent=True,
                                                         mode='immediate'
                                                        )
                                                   ]
                                             )
                                        ]
                               )
                          ],
              sliders=sliders)
fig=dict(data=data, layout=layout, frames=frames)
plot(fig)

Значение ошибки, которое я получаю:

ValueError: Invalid properties specified for object of type plotly.graph_objs.Scatter: ('lat', 'lon')

Похоже, элемент Frame не похож на 'lat' 'lon', и этогде я застрял.

1 Ответ

0 голосов
/ 13 февраля 2019

Решение моей проблемы можно найти здесь - https://community.plot.ly/t/issue-with-scattermap-box-animation/19399

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...