Построить линии с разными осями X на одном графике - PullRequest
0 голосов
/ 21 декабря 2018

У меня есть два кадра данных df и df2.У них есть даты в качестве индекса и цены акций, как цв.Даты df 1/12/18-теперь даты df2 теперь +1 день, сейчас +2 день, сейчас +3 день. Я хочу изобразить их на одном графике.Я также хочу, чтобы интервал x asix составлял 10 дней. Это моя попытка

import matplotlib.pyplot as plt   
import numpy as np
import matplotlib.dates as mdates

ax1 = plt.subplots(111)
ax2 = plt.subplots(112)
plt.xticks(rotation=70)

y1=df
y2=df2
X2=pd.to_datetime(df2.index)
x=pd.to_datetime(df.index)
ax1.plot(x, y1, 'g-')
ax2.plot(x2, y2, 'b-')

ax1.xaxis.set_major_locator(mdates.DayLocator(interval=10))
ax1.xaxis.set_major_formatter(mdates.DateFormatter('%d-%m-%Y'))

Но ошибка получения ключа msg как

---> 17     ax1.plot(x, y1, 'g-')
     18     ax2.plot(x2, y2, 'b-')

AttributeError: объект 'tuple' не имеет атрибута'участок'

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Параметр для субплотов - это то количество субплотов, которое вы хотите создать.Следовательно дайте тот, который, кажется, хочет, чтобы вам нужно.Если вы хотите построить их оба на одном графике, используйте одну и ту же ось.

fig,ax1 = plt.subplots(1)

y1=df
y2=df2
X2=pd.to_datetime(df2.index)
x=pd.to_datetime(df.index)
ax1.plot(x, y1, 'g-')
ax1.plot(x2, y2, 'b-')
0 голосов
/ 21 декабря 2018

Вы вызвали аналогично названный, но неправильный метод.Должно быть:

ax1 = plt.subplot(111)
ax2 = plt.subplot(112)

plt.subplots(111) создает 111 участков.plt.subplot(111) создает один подзаговор в позиции 111.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...