77507


おそらくPython関係のドキュメントの読み方がわかっていないせいかと思うのですが、  
<https://seaborn.pydata.org/generated/seaborn.histplot.html>  
の

引用:

[code]

    seaborn.histplot(data=None, *, x=None, y=None, hue=None, weights=None, stat='count', bins='auto', binwidth=None, binrange=None, discrete=None, cumulative=False, common_bins=True, common_norm=True, multiple='layer', element='bars', fill=True, shrink=1, kde=False, kde_kws=None, line_kws=None, thresh=0, pthresh=None, pmax=None, cbar=False, cbar_ax=None, cbar_kws=None, palette=None, hue_order=None, hue_norm=None, color=None, log_scale=None, legend=True, ax=None, **kwargs)
    
[/code]

の部分と実際の挙動と照らし合わせてわからないところがあります。

ネットの記事や他言語での勘で、思いつきで引数にデータを渡すとそれっぽく動くのですが、理解したいことがあります。

[code]

    import matplotlib.pyplot as plt
    import matplotlib.ticker as ticker
    import seaborn as sns
    
    ax = sns.histplot([
                5060,5000, 4400, 4001,2500, 1100, 1000, 900, 800
            ], kde=False, binwidth=500, binrange=(0,5500))
    ax.yaxis.set_major_locator(ticker.MultipleLocator(1))
    
[/code]

を実行すると

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

となります。

【質問1】  
第1引数に渡した配列

[code]

    [
      5060,5000, 4400, 4001,2500, 1100, 1000, 900, 800
    ]
    
[/code]

は、histplotのどの引数に渡したことになるんでしょう？（`data=`のところ？, `*`のところ？, `x=`のところ？、それ以外？）

【質問2】  
縦軸の`Count`はなぜ表示されたんでしょう？  
自動集計されているような旨はドキュメントのどこかに記載されているのでしょうか？  
それとも、それくらいは分析する人ならわかっているだろうということで説明が省略されていたりするのでしょうか？


CC BY-SA 4.0
2021-06-12T10:57:49.017
77505
2021-06-12T14:38:57.817
2021-06-12T14:38:57.817
9008
9008
question
python matplotlib seaborn
seabornのドキュメントの読み方がわからない


【回答1】

`data=`のところです。

> seaborn.histplot(data=None, *, x=None, y=None, hue=None, weights=None,
> stat='count', bins='auto', binwidth=None, binrange=None, discrete=None,
> cumulative=False, common_bins=True, common_norm=True, multiple='layer',
> element='bars', fill=True, shrink=1, kde=False, kde_kws=None, line_kws=None,
> thresh=0, pthresh=None, pmax=None, cbar=False, cbar_ax=None, cbar_kws=None,
> palette=None, hue_order=None, hue_norm=None, color=None, log_scale=None,
> legend=True, ax=None, **kwargs)

2つ目パラメータ`*`は以後のパラメータがキーワードを付けて指定する必要があることを示すものです。

[4.7.3.1.
位置またはキーワード引数](https://docs.python.org/ja/3/tutorial/controlflow.html#positional-
or-keyword-arguments)

> 関数定義に `/` も `*` もない場合は、引数は位置またはキーワードで関数に渡されます。

[4.7.3.2.
位置専用引数](https://docs.python.org/ja/3/tutorial/controlflow.html#positional-
only-parameters)

> これをもう少し詳しく見てみると、特定の引数を 位置専用 と印を付けられます。 位置専用 の場合、引数の順序が重要であり、キーワードで引数を渡せません。
> 位置専用引数は `/` （スラッシュ）の前に配置されます。 `/` は、位置専用引数を残りの引数から論理的に分離するために使用されます。 関数定義に
> `/` がない場合、位置専用引数はありません。

[4.7.3.3.
キーワード専用引数](https://docs.python.org/ja/3/tutorial/controlflow.html#keyword-
only-arguments)

> 引数をキーワード引数で渡す必要があることを示す キーワード専用 として引数をマークするには、引数リストの最初の キーワード専用 引数の直前に `*`
> を配置します。

キーワードを付けなくて良いパラメータは`data`だけです。

* * *

【回答2】

説明の最初の2つの文に記述されている内容でしょう。

> Plot univariate or bivariate histograms to show distributions of datasets.  
>  データセットの分布を示すために、単変量または二変量のヒストグラムをプロットします。
>
> A histogram is a classic visualization tool that represents the distribution
> of one or more variables by counting the number of observations that fall
> within disrete bins.  
>  ヒストグラムは、個別のビンに含まれる観測値の数をカウントすることにより、1つ以上の変数の分布を表す古典的な視覚化ツールです。

つまり、0から5500まで(5500を含まず)の500毎に、指定された数値をカウントし、その数をグラフに表したということになります。

[code]

     500 -  999 :  800,  900 : 2個
    1000 - 1499 : 1000, 1100 : 2個
    2500 - 2999 : 2500       : 1個
    4000 - 4499 : 4001, 4400 : 2個
    5000 - 5499 : 5000, 5060 : 2個
    他は0個
    
[/code]


CC BY-SA 4.0
2021-06-12T11:45:17.423
77507
2021-06-12T12:58:16.003
2021-06-12T12:58:16.003
26370
26370
77505
answer