60185


実現したいこと。  
画像のようにY軸のtickラベルの数字を書き換えたいです。

具体的には、plotしたY軸のtickラベルの数字に対して、「¥」マークを付けて  
tickラベルを更新したいです。

考え方として、「get_yticklabels」を使って「Y軸のtickラベル」のデータの取得し、set_textで更新を試みたのですが、get_yticklabelsで空文字しか取得できません。

もし解決方法を知っている方がいましたら教えてください。

**現状のソースコード**

[code]

    import matplotlib.pyplot as plt
    
    fig, ax1 = plt.subplots()
    plt.plot([1,2,3,4,5] , [3,4,5,6,7])
    
    fig.show()
    y_labels = ax1.get_yticklabels()
    
    #get_yticklabelsでY軸の数値を取りたいがなぜか取れない(空白になる)
    
    for i  in  range(len(y_labels)):
        lable = y_labels[i]
        text = lable.get_text()
        text = '¥' + text
        lable.set_text(text)
    
    
    #ax1.set_yticklabels(y_labels) #このまま左記を実行すると　ｙ軸のラベルに「¥」のみ表示されてしまう
    plt.show()
    
    
[/code]

**出力結果**

[![実現したいこと](https://i.stack.imgur.com/vtEkk.png)](https://i.stack.imgur.com/vtEkk.png)


CC BY-SA 4.0
2019-11-01T09:38:17.557
60181
2019-11-01T11:36:00.047
2019-11-01T11:36:00.047
3060
28247
question
python matplotlib
pythonのmatplotlibにてget_yticklabels関数でy軸のtickラベルの情報が取得できない


この記事の応用で出来るようになります。  
[Modify tick label text](https://stackoverflow.com/q/11244514/9014308)

`#`でコメント付けたところが変更点です。

[code]

    import matplotlib.pyplot as plt
    
    fig, ax1 = plt.subplots()
    plt.plot([1,2,3,4,5] , [3,4,5,6,7])
    
    fig.canvas.draw()  # fig.show()ではなくこちらを使う
    y_labels = [item.get_text() for item in ax1.get_yticklabels()]  # リスト内包表記でラベル配列取得
    
    for i  in  range(len(y_labels)):
        y_labels[i] = '¥' + y_labels[i]  # 単純に文字列前に挿入
    
    ax1.set_yticklabels(y_labels)  # 変更したラベルを設定
    plt.show()
    
[/code]

表示結果  
[![result_Figure1](https://i.stack.imgur.com/kdPi7.png)](https://i.stack.imgur.com/kdPi7.png)


CC BY-SA 4.0
2019-11-01T10:47:43.783
60185
2019-11-01T10:47:43.783
26370
60181
answer