

# 実現したい事

以下のような各月の売上が最も高い項目に●印を付けたデータがあるとします。このデータを用いてY軸に項目名を表示させ、各月ごとの変化を表すグラフを作成したいと考えています。

# データ

月  | 魚 | 肉 | 野菜  
---|---|---|---  
1月  | ● |  |  
2月  |  | ● |  
3月  |  |  | ●  
…  |  |  |  
12月  | ● |  |  
  
# 完成イメージ

[![完成イメージ図](https://i.stack.imgur.com/bXO65.png)](https://i.stack.imgur.com/bXO65.png)

# 試したこと

Pythonの作図に関して思いつく限りのキーワードで調べ数日試行錯誤しましたが、それでもさっぱりわからず質問させて頂きました。  
おそらく初歩的な質問かつ、データと図が非常に大雑把で申し訳ありませんが回答よろしくお願い致します。


CC BY-SA 4.0
2023-09-19T07:05:11.507
96263
2023-09-20T01:43:39.907
2023-09-19T08:43:22.473
3060
58894
question
python matplotlib
Matplotlib で Y軸に項目名を表示させたグラフを作成したい


コメントを参考に項目を一つにまとめ1,2,3と定数を持つデータに置き換えた後、FixedFormatterを使ってY軸を定義することで解決しました。  
コメントありがとうございました。


CC BY-SA 4.0
2023-09-19T08:17:57.160
96264
2023-09-19T08:43:46.927
2023-09-19T08:43:46.927
3060
58894
96263
answer


解決済みなので御参考です。

Y軸に表示したい「魚，肉，野菜」を Y変数の値にするという方法も考えられます。

ただし，Y軸の目盛の順番は値の出現順になるようなので，（今回のデータでは必要ありませんが）設定したい目盛順になるように透明の線を事前に描画しました。

[code]

    import matplotlib.pyplot as plt
    import japanize_matplotlib
    
    x = [str(i) + '月' for i in range(1, 13)]
    y = ['魚', '肉', '野菜', '野菜', '魚', '肉',
         '肉', '魚', '野菜', '肉', '野菜', '魚']
    
    fig, ax = plt.subplots()
    ax.plot(x[:3], ['魚', '肉', '野菜'], color=(0, 0, 0, 0))
    ax.plot(x, y, marker='o')
    plt.show()
    
[/code]

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


CC BY-SA 4.0
2023-09-20T01:43:39.907
96272
2023-09-20T01:43:39.907
54588
96263
answer