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

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

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

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

Q&A

解決済

1回答

904閲覧

pythonで描いたグラフに横線(plotの定義)を入れたい、そして複数に書かれたデータをcsvに一括で落としたい

mufufu

総合スコア37

Python

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

0グッド

0クリップ

投稿2022/03/20 05:54

編集2022/03/20 06:48

pythonで描いたグラフに横線を入れたい、そして複数に書かれたデータをすべて同じcsvの同じシートに一括で落としたいのですが、上手くいきません

質問が2つあります。

①pythonで描いたグラフで、イールドスプレッドは左軸、QQQは右軸にして、左軸が「0」の値で横線を入れたい

②数に書かれたデータをすべて同じcsvの同じシートに一括で落としたい

〔自分が実行したこと〕
①に関してはコードを書くと添付のようにすべて右軸で表示され、「plot.axhline(y = 0, color = 'red', ls = 'dotted')」をいれると、エラーが表示されます

②に関しては、色々考え、探したのですが、コードが見つかりませんでした

イメージ説明

python

1コード 2import numpy as np 3import pandas as pd 4import datetime as dt 5import pandas_datareader.data as web 6import yfinance as yf 7 8s = dt.date(2000, 1, 1) 9e = dt.date(2022, 3, 18) 10 11 12 13df_2 = web.DataReader("DGS2", "fred", s, e) 14df_3 = web.DataReader("DGS3", "fred", s, e) 15df_5 = web.DataReader("DGS5", "fred", s, e) 16df_7 = web.DataReader("DGS7", "fred", s, e) 17df_10 = web.DataReader("DGS10", "fred", s, e) 18df_20 = web.DataReader("DGS20", "fred", s, e) 19df_30 = web.DataReader("DGS30", "fred", s, e) 20 21codelist = ["QQQ"] 22 23df_QQQ = yf.download(codelist, s, e)["Adj Close"] 24 25df = pd.concat([df_2,df_3, df_5, df_7,df_10, df_20, df_30,df_QQQ], axis=1) 26 27#イールドスプレッドの定義付け 28 29df['spread5-2'] = df['DGS5'] - df['DGS2'] 30df['spread10-2'] = df['DGS10'] - df['DGS2'] 31df['spread10-3'] = df['DGS10'] - df['DGS3'] 32df['spread10-7'] = df['DGS10'] - df['DGS7'] 33df['spread30-5'] = df['DGS30'] - df['DGS5'] 34df['spread30-20'] = df['DGS30'] - df['DGS20'] 35 36 37#チャート、イールドスプレッド 38 39df['spread5-2'].plot(figsize=(15,10),fontsize=15) 40df['spread10-2'].plot(figsize=(15,10),fontsize=15) 41df['spread10-3'].plot(figsize=(15,10),fontsize=15) 42df['spread10-7'].plot(figsize=(15,10),fontsize=15) 43df['spread30-5'].plot(figsize=(15,10),fontsize=15) 44df['spread30-20'].plot(figsize=(15,10),fontsize=15) 45df_QQQ.plot(figsize=(15,10),fontsize=15) 46 47plot.axhline(y = 0, color = 'red', ls = 'dotted') 48 49#CSVに落とす 50df['spread5-2'].to_csv('spread5-2.csv') 51df['spread10-2'].to_csv('spread10-2.csv') 52df['spread10-3'].to_csv('spread10-3.csv') 53df['spread10-7'].to_csv('spread10-7.csv') 54df['spread30-20'].to_csv('spread30-20.csv') 55df_QQQ.to_csv('df_QQQ.csv')

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

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

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

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

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

meg_

2022/03/20 06:07

> ①に関してはコードを書くと添付のようにすべて右軸で表示され、「plot.axhline(y = 0, color = 'red', ls = 'dotted')」をいれると、エラーが表示されます エラーとはどんなエラーでしょうか?
mufufu

2022/03/20 06:35

NameError: name 'plot' is not defined 上記のエラーが表示されます
meg_

2022/03/20 06:44

> NameError: name 'plot' is not defined > 上記のエラーが表示されます jupyterでコード実行されているようなので「plot」を定義したセルの実行漏れではありませんか? ※質問は編集できますので情報は質問に追記した方が回答が付きやすくなるかと思います。
mufufu

2022/03/20 06:49

はい、jupyterでかいました。 この場合は、どのようにplotの定義をするのでしょうか。 ネットで検索したコードをもとにかいたのですが、人によっては「plot」と「plt」の意味がおなじなのでしょうか。 一般的に「plt」と「plot」は違う意味なのでしょうか。
melian

2022/03/20 06:53

エラーに関しては以下で表示される様になります。 ax = df_QQQ.plot(figsize=(15,10),fontsize=15) ax.axhline(y = 0, color = 'red', ls = 'dotted')
meg_

2022/03/20 06:58

> この場合は、どのようにplotの定義をするのでしょうか。 引用元が分からないので分かりません。 > ネットで検索したコードをもとにかいたのですが、人によっては「plot」と「plt」の意味がおなじなのでしょうか。 > 一般的に「plt」と「plot」は違う意味なのでしょうか。 おそらくmatplotlib.pyplotをimportする際によく使われる「import matplotlib.pyplot as plt」のことを指しているかと思いますが、pltが使用されることが多いかと思います。(別に他の名前でも良いです)
mufufu

2022/03/20 07:00

QQQチャートを除いたチャートでは下記のようにして、横線が表示されました。 ax = df['spread5-2'].plot(figsize=(15,10),fontsize=15) ax.axhline(y = 0, color = 'red', ls = 'dotted') QQQのデータを右軸としてチャートを描くにはどうしたいいですか。
guest

回答1

0

ベストアンサー

①pythonで描いたグラフで、イールドスプレッドは左軸、QQQは右軸にして、左軸が「0」の値で横線を入れたい

twinx() を使います。
※ 左右の区別がしづらかったので line color を設定しています

python

1#チャート、イールドスプレッド 2 3# df['spread5-2'].plot(figsize=(15,10),fontsize=15) 4# df['spread10-2'].plot(figsize=(15,10),fontsize=15) 5# df['spread10-3'].plot(figsize=(15,10),fontsize=15) 6# df['spread10-7'].plot(figsize=(15,10),fontsize=15) 7# df['spread30-5'].plot(figsize=(15,10),fontsize=15) 8# df['spread30-20'].plot(figsize=(15,10),fontsize=15) 9 10ax1 = df['spread5-2'].plot(figsize=(15,10),fontsize=15,color='blue') 11ax1.axhline(y = 0, color = 'red', ls = 'dotted') 12ax2 = ax1.twinx() 13df_QQQ.plot(figsize=(15,10),fontsize=15,color='green',ax=ax2)

②数に書かれたデータをすべて同じcsvの同じシートに一括で落としたい

df に全てのデータ(イールドスプレッド + QQQ)が含まれていますので、そのまま CSV ファイルとして保存します。

python

1#CSVに落とす 2df.to_csv('df_all.csv')

投稿2022/03/20 07:42

melian

総合スコア19798

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

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

mufufu

2022/03/20 08:06

全部できました。 csvは↓↓で全部落ちるんですね。 「df.to_csv('df_all.csv')」 凡例表示も加えようとして、下記のコードを加えたのですが、 ax1 = df['spread5-2'].plot(figsize=(15,10),fontsize=15,color='blue') ax1.axhline(y = 0, color = 'red', ls = 'dotted') ax2 = ax1.twinx() df_QQQ.plot(figsize=(15,10),fontsize=15,color='green',ax=ax2) plot.legend(fontsize=12,loc='upper left') 「NameError: name 'plot' is not defined」 と、表示されてしまいました。 これはどのように対処したらいいですか。
melian

2022/03/20 08:17

それぞれのプロットに label= を追加します。そして、ax1 と ax2 の legend をマージします。 ax1 = df['spread5-2'].plot(figsize=(15,10),fontsize=15,color='blue',label='spread5-2') ax1.axhline(y = 0, color = 'red', ls = 'dotted') ax2 = ax1.twinx() df_QQQ.plot(figsize=(15,10),fontsize=15,color='green',ax=ax2,label='QQQ') #凡例(legend) lines1, labels1 = ax1.get_legend_handles_labels() lines2, labels2 = ax2.get_legend_handles_labels() ax1.legend(lines1 + lines2, labels1 + labels2, loc='upper left')
mufufu

2022/03/29 06:13

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問