

plotlyで、一回グラフのサイズを指定してグラフを作り、、そのあとに、自動でグラフのサイズを成形したいのですが、どうすればいいのでしょうか？  
目的としては、サイズを指定したグラフとサイズが自動で変わるグラフを作り、htmlで保存して、サイズを指定した方は、印刷用。サイズが自動で変わる方は、使うモニターの解像度に合わせて適切なサイズを表示させる用途で使いたいのです。

[code]

    # imports
    import pandas as pd
    import plotly.graph_objs as go
    import numpy as np
    
    # data
    np.random.seed(4)
    x = np.linspace(0, 1, 50)
    y = np.cumsum(np.random.randn(50))
    
    # plotly line chart
    fig = go.Figure(data=go.Scatter(x=x, y=y, mode='lines'), layout_yaxis_range=[-4,4])
    fig.update_layout(
        width=1000,
        height=1000 * 2 ** 0.5,
    )              
    fig.show()
    fig.update_layout(
        autosize=True
    ) 
    fig.show()
    
[/code]

htmlを生成する場合、

[code]

    # imports
    import pandas as pd
    import plotly.graph_objs as go
    import numpy as np
    
    # data
    np.random.seed(4)
    x = np.linspace(0, 1, 50)
    y = np.cumsum(np.random.randn(50))
    
    # plotly line chart
    fig = go.Figure(data=go.Scatter(x=x, y=y, mode='lines'), layout_yaxis_range=[-4,4])
    fig.update_layout(
        width=1000,
        height=1000 * 2 ** 0.5,
    )              
    fig.write_html("a.html")
    fig.update_layout(
        autosize=True
    ) 
    fig.write_html("aa.html")
    
[/code]

異なるサイズのグラフを表示させたい（片方は、サイズが自動で変わるようにしたいです）


CC BY-SA 4.0
2021-06-16T23:18:29.297
77608
2022-01-11T06:59:04.523
2022-01-11T06:59:04.523
3060
42741
question
python plotly-python
plotlyでグラフのサイズを自動にしたい。


何かヒントというか何が問題なのかが分かってきたかもしれません。  
2つ目で`autosize=True`を指定しても、その前に指定した`width=1000,height=1000 * 2 **
0.5,`は残ったままなので、それが影響しているのかもしれませんね。  
最初の固定サイズの指定を消すか相対値化する機能があるか探してみては？ 無ければ2つ目は最初から作り直すとか？

とりあえず以下のように2つ目を最初から作り直すようにすると、出来ると思われます。

[code]

    # plotly line chart
    fig = go.Figure(data=go.Scatter(x=x, y=y, mode='lines'), layout_yaxis_range=[-4,4])
    fig.update_layout(
        width=1000,
        height=1000 * 2 ** 0.5,
    )              
    fig.show()
    #### 2つ目グラフもあらためて最初から作成する
    fig = go.Figure(data=go.Scatter(x=x, y=y, mode='lines'), layout_yaxis_range=[-4,4]) ####
    fig.update_layout(
        autosize=True
    ) 
    fig.show()
    
[/code]

* * *

@metropolis さんコメントの方法も同様の結果で有効と思われます。

[code]

    fig.update_layout(
        width=None,
        height=None,
        autosize=True
    )
    
[/code]


CC BY-SA 4.0
2021-06-17T06:22:21.310
77621
2021-06-17T07:12:50.973
2021-06-17T07:12:50.973
26370
26370
77608
answer