

CSVファイルを読み込んで計算をおこなっているのですが、棒グラフを作成するときのX座標をCSVで作成している表のヘッダー部分にしたいのですがうまく出力されません。

下記のコードを打ってるのですが `X=` の後は何をうてばいいのでしょうか？  
先にHeaderの値を何かで指定するべきなのでしょうか？

[code]

    plt.bar(x=header,height=model,)
    
[/code]


CC BY-SA 4.0
2023-01-22T10:06:30.387
93507
2023-01-29T05:59:56.453
2023-01-24T02:00:07.853
3060
56710
question
python
値の指定について


通常 CSVファイルをデータフレームに読み込むとヘッダは列名になるので，X座標に列名を設定して描画する記述例を示します。  
test.csv:

[code]

    ,rat,ox,tiger,rabbit
    Q1,1,2,3,4
    Q2,5,6,7,8
    Q3,9,10,11,12
    
[/code]

[code]

    import pandas as pd
    import matplotlib.pyplot as plt
    
    df = pd.read_csv('test.csv', index_col=0)
    
    plt.figure(figsize=(8, 6))
    plt.bar(df.columns, df.loc['Q1'], label='Q1')
    plt.legend()
    plt.show()
    
[/code]

[![描画結果1](https://i.stack.imgur.com/n6g7c.png)](https://i.stack.imgur.com/n6g7c.png)  
また，X座標に数値を設定して全ての行を横並びに描画した後にX軸を列名にする記述例も示します。

[code]

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    
    df = pd.read_csv('test.csv', index_col=0)
    
    plt.figure(figsize=(8, 6))
    x = np.arange(df.columns.size)
    w = 0.8 / df.index.size
    xt = x + (w / 2) * (df.index.size - 1)
    
    for i, lb in enumerate(df.index):
        plt.bar(x + w * i, df.loc[lb], width=w, label=lb)
    
    plt.xticks(xt, df.columns)
    plt.legend()
    plt.show()
    
[/code]

[![描画結果2](https://i.stack.imgur.com/n0Bkd.png)](https://i.stack.imgur.com/n0Bkd.png)


CC BY-SA 4.0
2023-01-29T05:41:09.913
93602
2023-01-29T05:59:56.453
2023-01-29T05:59:56.453
54588
54588
93507
answer