python作成によるグラフを作成しました。指定した期間の縦線と指定した値の横線をいれたいのですが、下記のコードをいれても上手く表示されないです。
例えば、日付の縦線なら2021/3/31~2021/4/10の期間に縦線を入れたいです。
そして、横線は
ax1.axhline(y = 0, color = 'red', ls = 'dotted')
ax1.axhline(y = 1, color = 'red', ls = 'dotted')
と、2つになってますコードを0と1に横線をいれるために1つにまとめたいです。
Python
1import numpy as np 2import pandas as pd 3import datetime as dt 4import pandas_datareader.data as web 5import yfinance as yf 6import japanize_matplotlib 7 8 9s = dt.date(1995, 1, 1) 10e = dt.date.today() 11 12#米債利回りデータの取得(FREDから取得) 13df_3month = web.DataReader("DTB3", "fred", s, e) 14df_2 = web.DataReader("DGS2", "fred", s, e) 15df_3 = web.DataReader("DGS3", "fred", s, e) 16df_5 = web.DataReader("DGS5", "fred", s, e) 17df_7 = web.DataReader("DGS7", "fred", s, e) 18df_10 = web.DataReader("DGS10", "fred", s, e) 19df_20 = web.DataReader("DGS20", "fred", s, e) 20df_30 = web.DataReader("DGS30", "fred", s, e) 21 22 23#米株価指数データの取得(米ヤフーファイナンスから取得) 24codelist = ["QQQ"] 25df_QQQ = yf.download(codelist, s, e)["Adj Close"] 26 27 28#米株価を含めたデータの定義 29df = pd.concat([df_3month,df_2,df_3, df_5, df_7,df_10, df_20, df_30,df_QQQ], axis=1) 30 31 32#米株価を除いたデータの定義 33df_port = pd.concat([df_3month,df_2,df_3, df_5, df_7,df_10, df_20, df_30], axis=1) 34 35 36#米株価を除いた、米債利回りだけのチャート 37df_port.plot(figsize=(17,10),fontsize=15) 38 39df['spread5-2'] = df['DGS5'] - df['DGS2'] 40df['spread10-3month'] = df['DGS10'] - df['DTB3'] 41df['spread10-2'] = df['DGS10'] - df['DGS2'] 42df['spread10-3'] = df['DGS10'] - df['DGS3'] 43df['spread10-7'] = df['DGS10'] - df['DGS7'] 44df['spread30-5'] = df['DGS30'] - df['DGS5'] 45df['spread30-20'] = df['DGS30'] - df['DGS20'] 46 47df['QQQ']=df_QQQ 48 49 50#米10年債利回り - 米2年債利回り、2つめのコードの書き方として、下記のような定義付けもできる 51 52#spread = df_10['DGS10'] - df_2['DGS2'] 53 54 55df['spread5-2'].plot(figsize=(15,10),fontsize=15) 56df['spread10-3month'].plot(figsize=(15,10),fontsize=15) 57df['spread10-2'].plot(figsize=(15,10),fontsize=15) 58df['spread10-3'].plot(figsize=(15,10),fontsize=15) 59df['spread10-7'].plot(figsize=(15,10),fontsize=15) 60df['spread30-5'].plot(figsize=(15,10),fontsize=15) 61 62 63 64#凡例を置く 65#下記の方法で「ax1」を定義すると、凡例が2回表示されるので、凡例が一番最後(この場合はdf['spread30-20'])にくるものを抽出したほうがよい。 66 67ax1 = df['spread30-20'].plot(figsize=(15,10),fontsize=15,color='blue',label='spread30-20') 68ax1.axhline(y = 0, color = 'red', ls = 'dotted') 69ax1.axhline(y = 1, color = 'red', ls = 'dotted') 70 71ax1.axvline( = '2021-03-30', color = 'red', ls = 'dotted') 72 73ax2 = ax1.twinx() 74df_QQQ.plot(figsize=(15,10),fontsize=15,color='green',ax=ax2,label='QQQ') 75 76#凡例(legend) 77lines1, labels1 = ax1.get_legend_handles_labels() 78lines2, labels2 = ax2.get_legend_handles_labels() 79ax1.legend(lines1 + lines2, labels1 + labels2, loc='upper left')#左記は「lines1」と「lines2」を合わせて左上に表示するという意味 80 81 82#ax2.legend(fontsize=10,loc='upper right', borderaxespad=0.5)#「ax2」用として右側に別記して凡例を表示させる方法 83 84 85 86#タイトルを表示 87ax1.set_title("各年月イールドスプレッド(左軸:%)とQQQ(右軸:pt)",fontsize=20) 88 89 90

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/04/08 15:05
2022/04/08 15:14
2022/04/08 23:21
2022/04/09 00:32
2022/04/09 00:48