绘制两个具有不同日期的不同数据帧 - 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”,情节是正确的:
我有两个不同的数据框。第一个是来自选定时间间隔的选定代码的 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
所以每当我尝试在同一个图中绘制这两个数据帧时:
但是,每当我将 '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”,情节是正确的: