plotly / plotly/plotly.py

Plotting data only on secondary_y axes ignores subplot grid

オープン
#4,302 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

bug P3
主要言語
Python
スター
18.8k
フォーク
2.8k
平均マージ
16時間 26分
マージ済み PR(30日)
21

説明

Hello,

running the following code will produce a 2x2 subplot grid with data on the primary_y axes and data on one secondary_y axes.

from plotly.subplots import make_subplots
import plotly.graph_objects as go
import numpy as np

rows = 2
cols = 2

fig = make_subplots(rows=rows, cols=cols, specs=[[{"secondary_y": True}] * cols] * rows)

fig.add_trace(go.Scatter(x=np.arange(5), y=np.arange(5), name='1:1 primary_y',),
              secondary_y=False, row=1, col=1)

fig.add_trace(go.Scatter(x=np.arange(5), y=np.arange(5), name=f'1:2 primary_y',),
              secondary_y=False, row=1, col=2)

fig.add_trace(go.Scatter(x=np.arange(5), y=np.arange(5), name=f'2:1 primary_y',),
              secondary_y=False, row=2, col=1)

fig.add_trace(go.Scatter(x=np.arange(5), y=np.arange(5), name=f'2:2 primary_y',),
              secondary_y=False, row=2, col=2)

# plot on secondary_y
fig.add_trace(go.Scatter(x=np.arange(5) + 1, y=np.arange(5), name=f'2:2 secondary_y',),
              secondary_y=True, row=2, col=2)

fig.update_layout(height=400, width=600)

fig.write_html('test_bug.html')

grafik

however if you don’t plot any data on a primary_y axes but leave the data on the secondary_y axes the height of the axes will take up the whole height of the figure

from plotly.subplots import make_subplots
import plotly.graph_objects as go
import numpy as np

rows = 2
cols = 2

fig = make_subplots(rows=rows, cols=cols, specs=[[{"secondary_y": True}] * cols] * rows)

fig.add_trace(go.Scatter(x=np.arange(5), y=np.arange(5), name='1:1 primary_y',),
              secondary_y=False, row=1, col=1)

fig.add_trace(go.Scatter(x=np.arange(5), y=np.arange(5), name=f'1:2 primary_y',),
              secondary_y=False, row=1, col=2)

fig.add_trace(go.Scatter(x=np.arange(5), y=np.arange(5), name=f'2:1 primary_y',),
              secondary_y=False, row=2, col=1)

# fig.add_trace(go.Scatter(x=np.arange(5), y=np.arange(5), name=f'2:2 primary_y',),
#               secondary_y=False, row=2, col=2)

# plot on secondary_y
fig.add_trace(go.Scatter(x=np.arange(5) + 1, y=np.arange(5), name=f'2:2 secondary_y',),
              secondary_y=True, row=2, col=2)

fig.update_layout(height=400, width=600)

fig.write_html('test_bug.html')

grafik

is this behaviour intentional?

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

make_subplots、add_trace、および secondary_y オプションを使用して 2 つの例を再現し、生成された test_bug.html ファイルを比較します。2 行目 2 列目のプライマリトレースを省略した場合に、サブプロットグリッドが軸のドメインをどのように割り当てるかを調査します。セカンダリ軸のみのデータが図全体に拡張されず、2x2 のサブプロットセル内に収まることを確認できれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
numpy, python
領域
data-visualization
issue の種類
バグ
難易度
3/5
見積もり時間
1〜2日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
38/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。