Идея заключалась бы в создании осей ax
и двойных осей ax2 = ax.twinx()
и последующего построения каждого кадра данных для одного из них df.plot(ax=ax)
и df2.plot(ax=ax2)
.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
a = np.linspace(-5,5, 11)
data1 = np.sort(np.random.rand(len(a),5))
data1[:,0] =a
data2 = np.sort(np.random.rand(len(a),5))*10
data2[:,0] =a
df = pd.DataFrame(data1, columns=["A", "B1", "C1", "D1", "E1"])
df2 = pd.DataFrame(data2, columns=["A", "B2", "C2", "D2", "E2"])
fig, ax = plt.subplots()
ax2 = ax.twinx()
df.plot(x="A", y=["B1", "C1", "D1", "E1"], ax=ax)
df2.plot(x="A", y=["B2", "C2", "D2", "E2"], ax=ax2, ls="--")
plt.show()
Если вместо этого вы хотите иметь два отдельных графика (вопрос непонятен в этой точке), вы можете сделать это с помощью
fig, (ax, ax2) = plt.subplots(ncols=2)
и удаление вызова twinx
.
Вы можете упростить это, вы напрямую работаете с датами:
WITH t(n) AS (
SELECT date '2009-10-08' from dual
UNION ALL
SELECT n - 1
FROM t
WHERE n > date '2009-10-05'
)
SELECT to_char(n, 'yyyy-mm-dd') as n
FROM t;
возвращает:
N
----------
2009-10-08
2009-10-07
2009-10-06
2009-10-05
Были некоторые ошибки в отношении использования DATE ( или TIMESTAMP) арифметики в рекурсивных CTE. Выше работала для меня с использованием Oracle 12.2.0.1 и 11.2.0.3