Построение графиков и линий из кадра данных панд с другой осью Y - PullRequest
1 голос
/ 16 мая 2019

У меня есть следующий фрейм данных, который я хочу построить. Я пытаюсь получить 2 вспомогательных участка, один из которых с двумя участками (с разными осями y и общим x)

size = (20,10)
fig = plt.figure(figsize=size)
ax1 = fig.add_subplot(211)
ax2 = fig.add_subplot(212)
ax3 = ax2.twinx()

# the dataframe is obtained by other means, and has the following format:

Date        col1        col2    col3    col4        
2017-06-30  7813.9291   0.0000  0.0000  0.000000
2017-07-31  8222.1428   0.0000  0.0000  4.964809
2017-08-31  7010.1959   0.0000  0.0000  -17.288346
2017-09-30  5878.8063   0.0000  0.0000  -19.245227
.
.
.

df.iloc[:,0:3].plot.bar(figsize = size, ax = ax3)
df.iloc[:,-1].plot(figsize = size, ax = ax2)

Другой график с одним графиком на рисунке (в топоре 1) не доставляет проблем, поэтому я не буду публиковать его здесь.

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

Есть идеи, почему это происходит?

РЕДАКТИРОВАТЬ: я использую ноутбук Jupyter, с пандами 0,24 и Python 3,7

1 Ответ

1 голос
/ 16 мая 2019

Проблема в том, что

df.iloc[:,0:3].plot.bar(figsize = size, ax = ax3)

устанавливает ax3.xticks на 0, 1, ..., len(df)-1, а

df.iloc[:,-1].plot(figsize = size, ax = ax2)

использует df.index, в данном случае (я полагаю) метку времени, которые являются очень очень большими целыми числами. Вот почему вы не можете увидеть один из двух сюжетов. Предлагаем заново сделать линейный сюжет:

df.iloc[:,0:3].plot.bar(figsize = size, ax = ax3)
ax2.plot(range(len(df)), df.iloc[:,-1])

Вы можете попробовать другие подходы в моем ответе здесь .

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