在Dash Graph中创建水平散点线

时间:2019-07-26 13:29:38

标签: python plotly plotly-dash

我正在尝试从DataFrame创建水平线。 我的DF有一个时间戳索引,还有一列称为support。对于iterrows()中的每一行:我想从timestamp(x)和支撑column(y)datetime.now()(x)和相同的支撑列(y)创建一条水平直线。

我认为我可以做这样的事情:

import plotly.graph_objs as go

support_lines = []
for index, row in candles_df.iterrows():
    support_lines.append(go.Scatter(x=candles_df['timestamp'], y=row['support'], mode='lines', name='support'))

但是y必须是一个元组或某种列表。我当时想这将为每个时间范围(x)创建点,并为(y)使用相同的值

这将创建一条非水平线:

resistance_lines = go.Scatter(x=candles_df['timestamp'], y=candles_df['resistance'], mode='lines', name='resistance')

那不是我想要的。

1 个答案:

答案 0 :(得分:0)

我弄明白了。基本上,我创建了一个新的DataFrame,它具有主要的所有datetimeindex值,并将唯一的“ y”值添加到每一行。然后将其传递到散点图。

    #Null Check
    if len(candles_df['resistance']) > 0:
        #Getting a unique value for y axis
        for item in np.nditer(candles_df['resistance'].unique()):
            #Add all rows to new DataFrame
            temp_df = pd.DataFrame(candles_df['timestamp'])
            #adding a column with a single value for every row
            temp_df['resistance'] = item
            #create the line 
            data.append(go.Scatter(x=temp_df['timestamp'],
                                   y=temp_df['resistance'],
                                   mode='lines',
                                   showlegend=False,
                                   name='resistance'))