Во-первых, присваивать y1 и y2 объекты не нужно, так как вы никогда не будете использовать их позже. Кроме того, legend=True
является значением по умолчанию.
Следовательно, вы сначала инициализируете массив объектов осей (по умолчанию один элемент, * 1032) * и nrow=2
), а затем присваивая его / их в соответствии с pandas графиками. Теперь, как правило, вы переписываете назначение топора с помощью ax=ax
, но поскольку вы используете вторичную ось Y, графики накладываются друг на друга:
# INITIALIZE FIG DIMENSION AND AXES OBJECTS
fig, axs = plt.subplots(figsize=(8,4))
# ASSIGN AXES OBJECTS ACCORDINGLY
speeds_df.plot(ax=axs, x='datetime', y='down', grid=True, label="DL", linewidth=2, ylim=(100,225))
speeds_df.plot(ax=axs, x='datetime', y='up', secondary_y=True, label="UL", linewidth=2, ylim=(100,225))
plt.show()
Чтобы проиллюстрировать, как можно расширять объекты осей, см. Ниже несколько (не перекрывающихся) графиков.
Пример нескольких вспомогательных участков с использованием nrows=2
:
# INITIALIZE FIG DIMENSION AND AXES OBJECTS
fig, axs = plt.subplots(nrows=2, figsize=(8,4))
# ASSIGN AXES OBJECTS WITH INDEXING AND NO Y LIMITS
speeds_df.plot(ax=axs[0], x='datetime', y='down', grid=True, label="DL", linewidth=2)
plt.subplots_adjust(hspace = 1)
speeds_df.plot(ax=axs[1], x='datetime', y='up', label="UL", linewidth=2)
plt.show()
Пример нескольких графиков с использованием ncols=2
:
# INITIALIZE FIG DIMENSION AND AXES OBJECTS
fig, axs = plt.subplots(ncols=2, figsize=(12,4))
# ASSIGN AXES OBJECTS WITH INDEXING AND NO Y LIMITS
speeds_df.plot(ax=axs[0], x='datetime', y='down', grid=True, label="DL", linewidth=2)
speeds_df.plot(ax=axs[1], x='datetime', y='up', label="UL", linewidth=2)
plt.show()
Вы можете даже использовать subplots=True
после установки поля даты / времени в качестве индекса:
# INITIALIZE FIG DIMENSION AND AXES OBJECTS
fig, axs = plt.subplots(figsize=(8,4))
# ASSIGN AXES OBJECT PLOTTING ALL COLUMNS
speeds_df.set_index('datetime').plot(ax=axs, subplots=True, grid=True, label="DL", linewidth=2)
plt.show()