Plotly 烛台的自定义颜色 剧情:完整代码:

问题描述

是否可以为烛台定义自定义颜色?我们希望根据我们自己的业务规则为它们着色,而不是 Plotly 认应用的“增加”和“减少”规则。

解决方法

直接回答你最初的问题:

是否可以为烛台定义自定义颜色?

根据您目前提供的信息,以及所提供的数据和代码的缺乏,我只能将您的问题解释为:

如何将不同的颜色应用于不同的烛台尺寸或开盘价和收盘价之间的范围。

这是一个图表,它为被认为是极端向上和向下的运动设置了不同的阈值:

df['change'] = df['AAPL.Close'] - df['AAPL.Open']
df_hi = df[df['change']>1.5]
df_lo = df[df['change']<-0.3]

然后,根据认为极端的数据设置“基本”跟踪:

fig = go.Figure(go.Candlestick(x=df['Date'],open=df['AAPL.Open'],high=df['AAPL.High'],low=df['AAPL.Low'],close=df['AAPL.Close']))

然后添加两个额外的轨迹以包括被认为是极端的运动:

# set up trace with extreme highs
fig.add_traces(go.Candlestick(x=df_hi['Date'],open=df_hi['AAPL.Open'],high=df_hi['AAPL.High'],low=df_hi['AAPL.Low'],close=df_hi['AAPL.Close']))

如果这确实是您要查找的颜色,我将提供有关如何设置颜色的进一步说明。通过此设置,您还可以通过图例对不同的轨迹进行子集化。

剧情:

enter image description here

完整代码:

import plotly.graph_objects as go
from plotly.subplots import make_subplots
import pandas as pd

# data
df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/finance-charts-apple.csv')
df=df.tail(15)

df['change'] = df['AAPL.Close'] - df['AAPL.Open']
df_hi = df[df['change']>1.5]
df_lo = df[df['change']<-0.3]

not_hi = df[df.index.isin(df_hi.index)].index
not_lo = df[df.index.isin(df_lo.index)].index
df = df.drop(not_hi)
df = df.drop(not_lo)

# set up figure with values not high and not low
# include candlestick with rangeselector
fig = go.Figure(go.Candlestick(x=df['Date'],close=df['AAPL.Close']))

# set up trace with extreme highs
fig.add_traces(go.Candlestick(x=df_hi['Date'],close=df_hi['AAPL.Close']))

# set up traces with extreme lows
fig.add_traces(go.Candlestick(x=df_lo['Date'],open=df_lo['AAPL.Open'],high=df_lo['AAPL.High'],low=df_lo['AAPL.Low'],close=df_lo['AAPL.Close']))


color_hi_fill = 'black'
color_hi_line = 'blue'

color_lo_fill = 'yellow'
color_lo_line = 'purple'

fig.data[1].increasing.fillcolor = color_hi_fill
fig.data[1].increasing.line.color = color_hi_line
fig.data[1].decreasing.fillcolor = 'rgba(0,0)'
fig.data[1].decreasing.line.color = 'rgba(0,0)'

fig.data[2].increasing.fillcolor = 'rgba(0,0)'
fig.data[2].increasing.line.color = 'rgba(0,0)'
fig.data[2].decreasing.fillcolor = color_lo_fill
fig.data[2].decreasing.line.color = color_lo_line

fig.show()