77518


以前に
[累積比率（線グラフを棒グラフに重ねる方法がわかりません](https://ja.stackoverflow.com/questions/77465/%E7%B4%AF%E7%A9%8D%E6%AF%94%E7%8E%87-%E7%B7%9A%E3%82%B0%E3%83%A9%E3%83%95-%E3%82%92%E6%A3%92%E3%82%B0%E3%83%A9%E3%83%95%E3%81%AB%E9%87%8D%E3%81%AD%E3%82%8B%E6%96%B9%E6%B3%95%E3%81%8C%E3%82%8F%E3%81%8B%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93)
の質問をしました。

こちら重ねることはできましたが、右側の縦軸が`0.6`あたりから始まります。  
右側の縦軸を`0`から始めると、ひとつめのデータが多くの割合を占めていることがよりわかると思うのですが、どうすれば`0`から始められますか？

上記質問、[回答](https://ja.stackoverflow.com/a/77467/9008)から本質問に必要そうな最低限のコードを下記に書きます。

[code]

    import matplotlib.pyplot as plt
    import matplotlib.ticker as ticker
    import pandas as pd
    import seaborn as sns
    
    df = pd.DataFrame({
       'name': ['A', 'B', 'C', 'D', 'E'],
      'value': [10000, 5000, 1000, 500, 100]
    })
    
    # set graph style
    sns.set_style(sns.axes_style(style='darkgrid'))
    sns.set_palette('muted')
    sns.set_color_codes('dark')
    
    # set accumulative ratio
    df['accumulative_ratio'] = df['value'].cumsum() / df['value'].sum()
    
    # plotting
    ax_val = df['value'].plot.bar()
    ax_acc = df['accumulative_ratio'].plot.line(
      ls='--', marker='o', color='red', secondary_y=True, label='acc. ratio')
    
    # value axes attributes
    ax_val.set_xlabel('Group')
    ax_val.set_ylabel('Value')
    ax_val.set_xticklabels(df.name)
    ax_val.grid(True)
    
    # accumulative ratio axes attributes
    ax_acc.set_ylabel('Accumulative ratio')
    ax_acc.yaxis.set_major_locator(ticker.MultipleLocator(0.1))
    ax_acc.grid(False)
    
    # show
    plt.show()
    
[/code]

[![画像の説明をここに入力](https://i.stack.imgur.com/xyW6B.png)](https://i.stack.imgur.com/xyW6B.png)


CC BY-SA 4.0
2021-06-13T01:48:06.117
77513
2021-06-13T03:18:37.597
9008
question
python pandas seaborn
右側縦軸を0から表示するにはどうしたらよいのでしょうか？


以下の`Axes.set_ylim(bottom, top)`が使えるでしょう。  
[6.3. 軸の最小値・最大値の設定 -
matplotlibのめっちゃまとめ](https://qiita.com/nkay/items/d1eb91e33b9d6469ef51#63-%E8%BB%B8%E3%81%AE%E6%9C%80%E5%B0%8F%E5%80%A4%E6%9C%80%E5%A4%A7%E5%80%A4%E3%81%AE%E8%A8%AD%E5%AE%9A)

こんな風にすれば出来ます。

[code]

    # accumulative ratio axes attributes
    ax_acc.set_ylabel('Accumulative ratio')
    ax_acc.set_ylim(0.0, 1.05)        #### ←これを追加する ####
    ax_acc.yaxis.set_major_locator(ticker.MultipleLocator(0.1))
    ax_acc.grid(False)
    
[/code]


CC BY-SA 4.0
2021-06-13T03:18:37.597
77518
2021-06-13T03:18:37.597
26370
77513
answer