質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

424閲覧

pythonで線グラフを書いてますが、スタート地点が左軸から離れています。これを左軸とくっつけてスタートしたいです

mufufu

総合スコア37

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/02/19 21:24

下記のコードを書いて、pythonで線グラフを書いてます。しかし、画僧のように、スタート地点が左軸から離れています。これを左軸とくっつけてスタートしたいです

それと、グラフの線のスタイルを破線でなくて、実線にするにはどうしたらいいですか?

イメージ説明

python

1コード 2import numpy as np 3import pandas_datareader.data as web 4import pandas as pd 5import matplotlib.pyplot as plt 6import scipy.stats as ss 7from matplotlib.animation import FuncAnimation 8import japanize_matplotlib 9import pandas_datareader.data as web #データのダウンロードライブラリ 10 11AAPL=web.DataReader("AAPL", "yahoo","2020/1/1")['Adj Close'] 12MSFT=web.DataReader("MSFT", "yahoo","2020/1/1")['Adj Close'] 13AMZN=web.DataReader("AMZN", "yahoo","2020/1/1")['Adj Close'] 14 15AAPL=AAPL/AAPL.iloc[0]#株価の指数化 16 17lnAAPL=np.log(AAPL) 18dlnAAPL=lnAAPL.diff().dropna() 19 20MSFT=MSFT/MSFT.iloc[0] 21MSFT 22lnMSFT=np.log(MSFT) 23dlnMSFT=lnMSFT.diff().dropna() 24 25AMZN=AMZN/AMZN.iloc[0] 26AMZN 27lnAMZN=np.log(AMZN) 28dlnAMZN=lnAMZN.diff().dropna() 29 30def portfolio_rebalance(tsd1,tsd2,tsd3): 31 port=pd.concat([tsd1,tsd2,tsd3],axis=1).dropna() 32 port.columns=('p1','p2','p3') 33 port['a1']=0 34 port['a2']=0 35 port['a3']=0 36 port['v']=1 37 38 n=len(port) 39 40 p1=port['p1'].iloc[0] 41 p2=port['p2'].iloc[0] 42 p3=port['p3'].iloc[0] 43 v=port['v'].iloc[0] 44 45 a1=float(v*0.418/p1) 46 a2=float(v*0.363/p2) 47 a3=float(v*0.219/p3) 48 49 port.iloc[0,3]=a1 50 port.iloc[0,4]=a2 51 port.iloc[0,5]=a3 52 53 for i in range(1,len(port)): 54 p1=port['p1'].iloc[i]#今日のAAPLの株価 55 p2=port['p2'].iloc[i]#今日のMSFTの株価 56 p3=port['p3'].iloc[i]#今日のAMZNの株価 57 58 p1_0=port['p1'].iloc[i-1]#前日のAAPLの株価 59 p2_0=port['p2'].iloc[i-1]#前日のMSFTの株価 60 p3_0=port['p3'].iloc[i-1]#前日のAMZNの株価 61 62 a1_0=port['a1'].iloc[i-1]#前日のAAPLの保有株数 63 a2_0=port['a2'].iloc[i-1]#前日のMSFTの保有枚数 64 a3_0=port['a3'].iloc[i-1]#前日のAMZNの保有枚数 65 66 v_0=port['v'].iloc[i-1]#前日のリバランスポートフォリオの価値 67 68 #v=a1_0*(p1-p1_0)+a2_0*(p2-p2_0)+v_0#今日のリバランスポートフォリオの価値 69 70 v=a1_0*p1+a2_0*p2+a3_0*p3#今日のリバランスポートフォリオの価値 71 72 port.iloc[i,6]=v#リバランスポートフォリオの価値のアップデート 73 74 75 port.iloc[i,3]=a1#AAPLの株数のアップデート 76 port.iloc[i,4]=a2#MSFTの株数のアップデート 77 port.iloc[i,5]=a3#AMZNの株数のアップデート 78 79 port['v2']=port.p1/3+port.p2/3+port.p3/3#リバランスの無いポートフォリオの価値 80 return port 81port=portfolio_rebalance(AAPL,MSFT,AMZN) 82 83plt.figure(figsize=(20, 20), dpi=50)#グラフの大きさ 84 85#下記の内容は対数変換されたデータをプロット 86# lnport.v.plot(label="効率的フロンティア",linewidth=1.0) 87# lnport.v2.plot(label="ウェイトを3等分",linewidth=1.0) 88# lnAAPL.plot(label='AAPL',style='-.',fontsize=30)#目盛りの文字の大きさを変更 89# lnMSFT.plot(label='MSFT',linestyle='--',fontsize=30)#目盛りの文字の大きさを変更 90# lnAMZN.plot(label='AMZN',linestyle='--',fontsize=30)#目盛りの文字の大きさを変更 91 92 93#下記は元のプロット 94port.v.plot(label="効率的フロンティア",linewidth=1.0) 95port.v2.plot(label="ウェイトを3等分",linewidth=1.0) 96AAPL.plot(label='AAPL',style='-.',fontsize=30)#目盛りの文字の大きさを変更 97MSFT.plot(label='MSFT',linestyle='--',fontsize=30)#目盛りの文字の大きさを変更 98AMZN.plot(label='AMZN',linestyle='--',fontsize=30)#目盛りの文字の大きさを変更 99 100plt.legend(loc="upper left",fontsize=30) 101plt.grid(True) 102plt.title("3銘柄と効率的フロンティアのパフォーマンス",fontsize=40) 103plt.show()

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

1T2R3M4

2022/02/19 21:50

>グラフの線のスタイルを破線でなくて とありますが、意図的に破線にmufufuさんがしているのでは。 もしかして、ご自身で書かれたコードではないのでしょうか。
mufufu

2022/02/20 04:03

失礼しました。色々なコードをつなげて、ためしながらやっていたので、このような質問になりました。
guest

回答1

0

ベストアンサー

左軸とくっつけてスタートしたい

plt.margins(x=0) を指定します。

グラフの線のスタイルを破線でなくて、実線にする

linestyle'-' にします(もしくは削除)。

python

1#下記は元のプロット 2port.v.plot(label="効率的フロンティア",linewidth=1.0) 3port.v2.plot(label="ウェイトを3等分",linewidth=1.0) 4AAPL.plot(label='AAPL',style='-',fontsize=30)#目盛りの文字の大きさを変更 5MSFT.plot(label='MSFT',linestyle='-',fontsize=30)#目盛りの文字の大きさを変更 6AMZN.plot(label='AMZN',linestyle='-',fontsize=30)#目盛りの文字の大きさを変更 7 8plt.margins(x=0)

イメージ説明

投稿2022/02/20 00:27

melian

総合スコア19618

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mufufu

2022/02/20 04:04

ありがとうございます。 解決しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問