前提・実現したいこと
ローソク足一本一本の色を一つの列の要素に合わして変えたいです。
この質問のようにラインや棒グラフならデータの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/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。