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

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

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

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

Python

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

Q&A

解決済

1回答

1228閲覧

ローソク足一本一本の色を条件別に変えたい

yuudai

総合スコア65

Matplotlib

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

Python

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

0グッド

0クリップ

投稿2020/12/30 16:00

前提・実現したいこと

ローソク足一本一本の色を一つの列の要素に合わして変えたいです。
この質問のようにラインや棒グラフならデータの1行ごとの要素に合わして色を変えられるのですが、ローソク足はプロットするときにX軸をあんまり意識していないような気がしてデータを左から順に並べているように感じます。どのようにすればローソク足の一本一本を条件によって変えることができますでしょうか?
よろしくお願いします。

該当のソースコード

現状はローソク足を普通にplotして同時に列Lowの値を棒グラフで色分けしてプロットしていますが醜いので改善したいです。
データ:each_market_ohlc
イメージ説明
イメージ説明

%matplotlib notebook import matplotlib.pyplot as plt import mplfinance.original_flavor as mpf fig = plt.figure(figsize=(12, 4)) ax = fig.add_subplot(1, 1, 1) mpf.candlestick2_ohlc( ax, opens = each_market_ohlc.Open.values, highs = each_market_ohlc.High.values, lows = each_market_ohlc.Low.values, closes = each_market_ohlc.Close.values, width=0.6, colorup='#77d879', colordown='#db3f3f' ) x = range(len(each_market_ohlc)) y = each_market_ohlc['Low'].values.tolist() market = each_market_ohlc['Markets'].values.tolist() label_off = '00000' #各市場を一度プロットしたらラベルを追加しないようにするため label_off = list(label_off) for i in range(len(each_market_ohlc)): if '0' not in label_off: if market[i] == 'Tokyo': ax.bar(x[i], y[i]-0.002, color= 'mistyrose') elif market[i] == 'London': ax.bar(x[i], y[i]-0.002, color= 'aquamarine') elif market[i] == 'NY': ax.bar(x[i], y[i]-0.002, color= 'deepskyblue') elif market[i] == 'Oceania': ax.bar(x[i], y[i]-0.002, color= 'salmon') else: ax.bar(x[i], y[i]-0.002, color= 'indigo') else: if market[i] == 'Tokyo': ax.bar(x[i], y[i]-0.002, color= 'mistyrose', label= 'Tokyo') label_off[0] = '1' elif market[i] == 'London': ax.bar(x[i], y[i]-0.002, color= 'aquamarine', label= 'London') label_off[1] = '1' elif market[i] == 'NY': ax.bar(x[i], y[i]-0.002, color= 'deepskyblue', label= 'NY') label_off[2] = '1' elif market[i] == 'Oceania': ax.bar(x[i], y[i]-0.002, color= 'salmon', label= 'Oceania') label_off[3] = '1' else: ax.bar(x[i], y[i]-0.002, color= 'indigo', label= 'Another') label_off[4] = '1' ax.set_ylim(min(each_market_ohlc['Low'])-0.003, max(each_market_ohlc['High'])+0.003) plt.legend() #plt.show()

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

もしかしたら何か方法はあるのかもしれませんが、足1本ずつ色を変える方法はおそらく用意されてはいないのではないかと思っています...。

掲載されているソースのcolorup='#77d879', colordown='#db3f3f'の部分で、上がるか下がるかでの足の色変更はできるはずです。

参考までですが、その他の足の色を変える方法のサンプルはこちらに載っていました。
Mplfinance Styles
(今回使用されているoriginal_flavorではなくアップデート後のドキュメントなので、記載されている通りに書いても動かないのではと思いますが、「どこまでカスタマイズできるのか」についてはここが参考になるかと思います。)

枠線の有無、枠線の色、塗りつぶしの色、足の形状が変更できることが確認できるかとは思います。
ですが、上がっているか下がっているか以外の条件で足の色を変える方法は載っていなさそうです。


参考

より幅広い範囲のドキュメントはこちらにあるようです
Customizing the Appearance of Your Plots

投稿2021/01/02 05:25

siruku6

総合スコア1382

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問