在 Dash Graph 中创建水平散点线
Creating a horizontal Scatter line in Dash Graph
我正在尝试从 DataFrame 创建水平线。
我的 DF 有一个时间戳索引和一个名为支持的列。对于 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')
这不是我想要的。
我想通了。基本上,我创建了一个新的 DataFrame,其中包含主要 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'))
我正在尝试从 DataFrame 创建水平线。
我的 DF 有一个时间戳索引和一个名为支持的列。对于 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')
这不是我想要的。
我想通了。基本上,我创建了一个新的 DataFrame,其中包含主要 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'))