我正在尝试在另一行上绘制锯齿形调整浪线。我的基准线(价格)中有最高点和最低点。我正在尝试用一条线连接最高点和最低点。这是一个示例:
这是我的数据集:
这就是我能走多远:
感谢您的帮助。
编辑1:
这是我无法使用的代码:
trend_index = target_out.columns.get_loc("trend_shifted")
close_index = target_out.columns.get_loc("price_close")
for i in range(1, len(target_out)):
if target_out.iloc[i, trend_index] == target_out.iloc[i-1, trend_index] and target_out.iloc[i-1, trend_index] is not None:
target_out.iloc[i, trend_index] = np.nan
target_out.iloc[i-1, trend_index] = target_out.iloc[i-1, close_index]
# multiple line plot
plt.plot( 'ind', 'price_close', data=target_out, marker='o', markerfacecolor='blue', markersize=12, color='skyblue', linewidth=4)
plt.plot( 'ind', 'trend_shifted', data=target_out, marker='', color='olive', linewidth=2)
plt.legend()
trend_shifted
列包含ones
和zeros
。连续的1和0的第一个元素实际上是曲折的最高点和最低点。其余要点并不重要。确定了最高点和最低点后,我需要画一条线,但是由于价格和趋势具有相对不同的值,因此图表是不平衡的(我的意思是,价格像0.00001,但趋势是0和1)
编辑2:
@rgk的代码有效。这是输出:
答案 0 :(得分:1)
尽管由于没有给出代码示例,这可能对您而言并不完美,但我认为使用掩码数组并将其与索引分开绘制将完成您要寻找的内容:
df = pd.DataFrame({'price_close': np.random.uniform(low=1.186e-05, high=1.255e-05, size=9),
'trend_shifted': [bool(random.getrandbits(1)) for x in range(1, 10)]})
df['trend_plot'] = [np.nan] + [df.price_close[i] if df.trend_shifted[i] != df.trend_shifted[i-1] else np.nan for i in range(1, len(df))]
mask = np.isfinite(df.trend_plot)
plt.plot(df.index, df.price_close, linestyle='-', marker='o')
plt.plot(df.index[mask], df.trend_plot[mask], linestyle='-', marker='o')
plt.show()