我正在尝试从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')
那不是我想要的。
答案 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'))