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

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

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

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

1回答

632閲覧

pythonでpandasとmatplotlibとpandas_datareaderを使用してチャートを一部だけ表示したい

kipipipi

総合スコア60

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2020/03/08 14:20

編集2020/03/27 12:57

こんにちは。
今タイトルにあるライブラリを使用してチャートを表示する挑戦をしています。
なんとか最低限のチャート表示はできたのですが、平均線も表示するために、一定以上の期間のデータ(1年間以上)を読み込む必要があります。
しかし、実際に見たいのはここ1ヶ月ほどのチャートです。
プロットしてから拡大すればいいのですが、最終的には自動でここ1ヶ月のチャートだけ表示して画像として出力したいです。
(つまり拡大作業を省きたい)

xlim()を使用する以外に期間を絞る方法はありますか??

元はこれです
この画像をこんな風にしたいです。↓
手動で拡大したのも

お分かりになる方がいらっしゃいませんか??
教えていただけないでしょうか。。。
よろしくお願いいたします。

ちなみに

python

1import matplotlib.pyplot as plt 2 3end = pd.datetime.today() #今日の日付 4 5plot_start = (pd.Period(end, 'D')-100).start_time #今日から100日前の日付 6 7print(type(plot_start)) #<class 'pandas._libs.tslibs.timestamps.Timestamp'> 8

まではわかっていますが、出力制御がわかりません。。。

進展

python

1left, right = plt.xlim() #引っ張ってきたデータのx軸の範囲を取得(float型?) 2left_Start = right - 150 #丁度いい日付まで戻します 3 4plt.xlim(left_Start,right) #ここでx軸の範囲を指定 5 6#出力してみました

y軸(価格軸)がよしなにしてくれていない状態です。。。
y軸を丁度良くするにはどうすればいいのでしょうか??
自動でやってくれたりしないのかと調査しています。
進展しました

解決しました!!

APIを叩いて受け取ったデータを使用して計算をした後、そのデータを追加したCSVデータを作成。
そのCSVを読み込んで描画することで期待していたチャートが描けました!!
まだまだこれから改良をしますが、こちらの問題は一旦解決したので閉めさせていただきます!!
イメージ説明

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

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

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

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

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

guest

回答1

0

ベストアンサー

Pandasのデータフレームで移動平均を含む株価データを保持して
おられのでしたら、
たとえば2002年から今日までのデータがあるとして

>>> print(data) Close 100日移動平均 350日移動平均 DATE 2002-06-06 11574.94 11029.3854 11774.651143 2002-06-07 11438.53 11038.3864 11768.214114 2002-06-10 11370.21 11047.6726 11761.078686 2002-06-11 11449.44 11060.0865 11754.904200 2002-06-12 11327.06 11071.5813 11748.888229 ... ... ... ... 2020-02-21 23386.74 23167.1789 21982.581257 2020-02-25 22605.41 23172.2446 21983.433686 2020-02-26 22426.19 23176.3050 21983.585400 2020-02-27 21948.23 23175.3049 21981.538371 2020-02-28 21142.96 23167.9455 21977.362229 [4344 rows x 3 columns]

過去30日分に絞り込む場合は、以下のように指定できます。

>>> print(data[-30:]) Close 100日移動平均 350日移動平均 DATE 2020-01-16 23933.13 22541.2951 21907.411029 2020-01-17 24041.26 22577.5196 21911.742686 2020-01-20 24083.51 22612.7231 21916.246086 2020-01-21 23864.56 22644.5965 21919.679857 2020-01-22 24031.35 22678.7243 21923.642829 2020-01-23 23795.44 22710.3986 21927.062971 2020-01-24 23827.18 22741.5613 21931.431829 2020-01-27 23343.51 22772.3860 21935.677771 2020-01-28 23215.71 22799.9823 21938.133857 2020-01-29 23379.40 22828.9821 21941.491514 2020-01-30 22977.75 22854.1503 21943.736400 2020-01-31 23205.18 22879.1584 21946.407257 2020-02-03 22971.94 22902.6759 21948.615657 2020-02-04 23084.59 22927.2702 21951.086686 2020-02-05 23319.56 22953.9744 21953.821000 2020-02-06 23873.59 22981.8509 21958.000343 2020-02-07 23827.98 23008.1350 21961.503800 2020-02-10 23685.98 23031.8106 21964.036200 2020-02-12 23861.21 23056.5017 21967.029743 2020-02-13 23827.73 23078.8014 21969.828343 2020-02-14 23687.59 23098.0812 21972.165743 2020-02-17 23523.24 23113.4307 21974.046000 2020-02-18 23193.80 23125.3555 21975.435771 2020-02-19 23400.70 23139.7554 21977.446629 2020-02-20 23479.15 23154.1024 21980.013257 2020-02-21 23386.74 23167.1789 21982.581257 2020-02-25 22605.41 23172.2446 21983.433686 2020-02-26 22426.19 23176.3050 21983.585400 2020-02-27 21948.23 23175.3049 21981.538371 2020-02-28 21142.96 23167.9455 21977.362229

こんなふうにデータの範囲を絞ってチャートを描いてみてはいかがでしょう。

投稿2020/03/08 15:49

technocore

総合スコア7337

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

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

kipipipi

2020/03/10 00:49

ご回答ありがとうございます! 平均線はこちらで計算しているので、データレームから抜き出す方法はしていないのですが、`print(data[-30:])`という考えから少し改良して何とかx軸はいい感じにできました。 追記しておきます! ただ、まだy軸がよしなにしてくれないので、困っています。。。 引き続きヒントでも頂ければ嬉しいです!
kipipipi

2020/03/27 12:52

その後ですが、データを取ってきた後に、計算した結果を追加したcsvを作成して、そのCSVデータを読み込んでグラフにすることができました!! 先日は理解していなかったようで、回り道をしていました。。。 無事解決できました!ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問