Plotly.expressスライダーが範囲を自動スケーリングしない

Aug 22 2020

目標と内容

python plotly.expressを使用して、データのさまざまな日付を「スライド」できるスライダーがあります。したがって、同じ日付のデータに対して1つのグラフを作成してから、別の日付にスライドして、スライダーの日付に対応する新しいデータを含む別のグラフを作成できます。理解しにくい場合は、下の写真を参照してください(インターネットから取得したものですが、異なる年をスライドするスライダーが表示されています):

したがって、私の目標は、現在のスライダーの日付に対応するデータをグラフに表示するスライダーを作成することです。

問題

私の問題は、スライダーを使用すると、正しいデータポイントが表示されますが、x軸とy軸が範囲を変更しないことです。つまり、スライド時に範囲を正しく自動スケーリングしません

x軸として、カテゴリ変数(名前)があり、y軸は価格です。したがって、別の日付にスライドすると、ポイントは変更されますが、カテゴリは最初のカテゴリのままになります。y軸についても同じことをします。

例として、日付までスライドすると、XIのx軸範囲はA、B、Cになり、それぞれy軸は1〜3になります$. However, if I slide to date Y, the data will change correctly but the ranges do not scale to the new data. Therefore, for date Y I will not see any points as the category will stay as the initiale ones A,B,C instead of showing C,E,F on x-axis. Moreover, for the y-axis, it will still only show from range 1 to 3$ たとえば、新しい範囲3-130にスケーリングする代わりに。

私が試したこと

私はこの人と同じ問題を抱えているようですが、答えはありませんでした。私は彼女が試したことも試しました:https://community.plotly.com/t/auto-scale-plotly-express/33364 これも試してみたかったのですが、コードのどこに配置すればよいかわかりません。 https://community.plotly.com/t/solved-how-to-progamatically-autoscale-plot/3278

私のコード

これは今のところ私のコードです:

        data.columns = ['price', 'category', 'date']
        data = data.sort_values(by=['date', 'price'])
        fig = px.scatter(data, x = "category", y = "price", animation_frame="date")
        fig.update_layout(
            yaxis_title="Price (€)",
        )
        fig['layout']['updatemenus'][0]['pad']['t'] = 180
        fig['layout']['sliders'][0]['pad']['t'] = 200
        fig.write_html("/home/**/Desktop/1.html", auto_play=True)

私は十分に明確だったと思います。追加情報が必要な場合はお知らせください。どんなアイデアやヒントも大歓迎です:)

回答

1 nicolaskruchten Aug 22 2020 at 01:29

残念ながら、これは現時点でPlotlyのアニメーションシステムの厳しい制限です。範囲を自動的に更新することはできません。こちらの「警告」セクションをご覧ください。https://plotly.com/python/animations/#current-animation-limitations-and-caveats