绘制两个具有不同日期的不同数据帧 - x 轴未排序

Plot two different dataframes with different dates- x axis is not ordered

我有两个不同的数据框。第一个是来自选定时间间隔的选定代码的 High/Lows。第二个数据帧包括在同一时间间隔发生的特殊 'signals'。

df:

          Time      High       Low
0   29/03/22 16:00  47871.02  47105.50
1   29/03/22 20:00  47726.00  46950.85
2   30/03/22 00:00  47457.16  46445.42
3   30/03/22 04:00  47580.00  47140.46
4   30/03/22 08:00  47500.00  47064.81
5   30/03/22 12:00  47344.50  46869.00
6   30/03/22 16:00  47700.22  46831.81
7   30/03/22 20:00  47292.68  46850.00
8   31/03/22 00:00  47425.21  46973.91
9   31/03/22 04:00  47170.71  46898.12
10  31/03/22 08:00  47386.70  47000.00
11  31/03/22 12:00  47600.00  46230.00
12  31/03/22 16:00  46492.65  45500.00
13  31/03/22 20:00  45849.99  45200.00
14  01/04/22 00:00  45644.86  44200.00
15  01/04/22 04:00  45110.81  44547.11
16  01/04/22 08:00  45170.62  45008.24

dfs:

  Time Frame       Signal    Price            Time
0         4H  SELL[37/75]  47440.0  29/03/22 16:00
1         4H   BUY[43/75]  47701.0  29/03/22 20:00
2         4H   BUY[24/75]  47435.0  30/03/22 04:00
3         4H  SELL[38/75]  47384.0  30/03/22 08:00
4         4H  SELL[38/75]  47074.0  30/03/22 20:00
5         4H   BUY[44/75]  47161.0  31/03/22 08:00
6         4H  SELL[31/75]  47152.0  31/03/22 12:00
7         4H  SELL[51/75]  46454.0  31/03/22 16:00

所以每当我尝试在同一个图中绘制这两个数据帧时:

它工作正常。这正是我想要的。信号时间与 H/L 时间匹配,因此它们相互混合,甚至替换 x 轴上的重复项。因为这些只是 Buy/Sell 信号,并且它们只发生在每个 4H 蜡烛等的收盘时

但是,每当我将 'dfs' 更改为:

  Time Frame             Signal    Price            Time

0         4H  RESISTANCE[35/75]  47150.0  30/03/22 18:58
1         4H        SELL[38/75]  47074.0  30/03/22 20:00
2         4H     SUPPORT[39/75]  47113.0  31/03/22 05:27
3         4H         BUY[44/75]  47161.0  31/03/22 08:00
4         4H  RESISTANCE[31/75]  47157.0  31/03/22 08:22
5         4H        SELL[31/75]  47152.0  31/03/22 12:00
6         4H  RESISTANCE[26/75]  47132.0  31/03/22 13:18
7         4H        SELL[51/75]  46454.0  31/03/22 16:00

结果是这样的:

x轴顺序不对

fig, ax = plt.subplots(figsize=(17.6, 9.6))
ax.plot(df['Time'], df['High'], marker='v', mec='blue',mfc='blue', ms=5, color = 'blue')
ax.plot(df['Time'], df['Low'], marker='v', mec='red',mfc='red', ms=5, color = 'red')
ax.tick_params(axis='x')
ax.scatter(dfs['Time'], dfs['Price'], color='black')
plt.xticks(rotation=45)
plt.show()

试图连接和合并两个数据帧。 还尝试绘制次要 x 轴。 没有运气。 用 pandas 绘图也不能解决问题。

我需要一个简单的技巧来解决这个问题。

提前致谢。

问题来自两个事实的结合:

  • 修改后的“dfs”的Time列包含“df”中不存在的日期,与原始“dfs”相反;
  • 您正在为 Time 列使用 string 值,而不是 datetime 对象。

在绘图之前,添加这两行代码:

df["Time"] = pd.to_datetime(df["Time"], format="%d/%m/%y %H:%M")
dfs["Time"] = pd.to_datetime(dfs["Time"], format="%d/%m/%y %H:%M")

然后,使用“df”和修改后的“dfs”,情节是正确的: