Layout images disappear in odd cases
まだ誰も着手していません。
- 主要言語
- JavaScript
- スター
- 18.3k
- フォーク
- 2k
- 平均マージ
- 2日 12時間
- マージ済み PR(30日)
- 28
説明
Two situations where layout images referenced to data can disappear:
- When one of the size parameters is far, far larger than necessary. Normally (with the default
sizing: 'contain') the aspect ratio of the image is preserved, so in the rectangle described bysizexandsizey, one of those is limiting and the non-limiting size can be increased indefinitely with no visible effect. This has a limit though: if you make it something like a million times too big, the image abruptly disappears. (this one is from an example by @celia-plotly) - On a date axis, in data arrays integer numbers and integer strings are both treated as years, but in layout images only integer strings are treated as years; integer numbers are treated as milliseconds since 1970 (and with the local UTC offset no less 🤦)
Here's a working example:
import dash
from dash import dcc
import plotly.graph_objects as go
import pandas as pd
# Create a Dash app
app = dash.Dash(__name__)
df = pd.DataFrame.from_records([
{"Year": 2008, "Tickets Sold": 8000000},
{"Year": 2009, "Tickets Sold": 9000000},
{"Year": 2010, "Tickets Sold": 5000000},
{"Year": 2011, "Tickets Sold": 5000000},
{"Year": 2012, "Tickets Sold": 7000000},
{"Year": 2013, "Tickets Sold": 5000000},
{"Year": 2014, "Tickets Sold": 7000000},
])
fig = go.Figure()
fig.add_trace(go.Scatter(x=df["Year"], y=df["Tickets Sold"]))
for j, row in df.iterrows():
fig.add_layout_image(
dict(
source="https://upload.wikimedia.org/wikipedia/commons/8/8a/Plotly-logo.png",
xref="x",
yref="y",
x=row["Year"],
y=row["Tickets Sold"],
sizex=1,
sizey=1000000,
xanchor="center",
yanchor="middle",
)
)
# Define the app layout
app.layout = dcc.Graph(figure=fig, style={"height": "50vh"})
if __name__ == "__main__":
app.run(debug=True)
And if you make sizex bigger, even as high as 10000, nothing changes. But go up to 100000 and the images disappear.
For the date flavor: add fig.update_xaxes(type="date") and sizex=1000*3600*24*365 (one year in msec), the images disappear. You can find them if you zoom out and back in around year 1970. But if you stringify, ie x=str(row["Year"]), they reappear atop the data points again.
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
提供されている plotly.js の再現コードを add_layout_image とともに使うことから始め、x/y データ軸を参照するレイアウト画像、極端に大きな sizex/sizey 値、および日付軸の数値座標に焦点を当てます。非常に大きな寸法でも画像が表示されたままになり、日付の値を整数として指定した場合にも、文字列の年について説明されている動作と一致すれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- javascript
- 領域
- data-visualization
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 35/100