У меня есть 5 временных рядов, которые я хочу рассчитать в подзаголовке. По существу, я использую subplotting:Комбинированные балонные и линейные подзадачи в пандах
fig, axes = plt.subplots(nrows=5, ncols=1, figsize=(16,10), sharex=True)
xlim = (start, end)
ax1=df.hr.plot(ax=axes[0], color='green', xlim=xlim)
ax2=df.act.plot(ax=axes[1], color='orange', xlim=xlim)
ax3=df.rr.plot(ax=axes[2], color='blue', xlim=xlim)
ax4=df2.set_index('timestamp').rmssd.plot(color='purple', ax=axes[3], xlim=xlim)
ax5=ma_df.tz_convert('US/Eastern')['any_act'].resample('10Min', how='count').plot(kind='line',ax=axes[4])
Который производит
В связи с характером данных, я хочу, чтобы представить себе последний сюжетные как гистограммы. Поэтому, естественно, я изменил последнюю строку:
ax5=ma_df.tz_convert('US/Eastern')['any_act'].resample('10Min', how='count').plot(kind='bar',ax=axes[4])
Который затем создает следующий рисунок:
Which, производит то, что я ожидал в последнем сюжетном, но и делает другие участки бесполезны , Излишне говорить, что это не то, что я хочу.
Как я могу объединить 4 линейные временные ряды с одной гистограммой в одном и том же сюжете, но разные подсети, все с одинаковой осью х? Значение Я бы хотел, чтобы первые 4 подзадачи, как на первом изображении, и последний подзаголовок, как на втором изображении.
Update
Я сделал простой пример, который, к сожалению, работает, как ожидалось, и не тиражировать мою проблему, которая еще более озадачивает. Код ниже
import pandas as pd
from matplotlib import pyplot as plt
%matplotlib inline
df = pd.read_csv('https://s3.amazonaws.com/temp-leonsas-qsaeamu0sl5v4b/df.csv')
bar_df = pd.read_csv('https://s3.amazonaws.com/temp-leonsas-qsaeamu0sl5v4b/bar_df.csv')
fig, axes = plt.subplots(nrows=4, ncols=1, figsize=(16,10), sharex=True)
ax1=df.hr.plot(ax=axes[0], color='green', kind='line')
ax2=df.act.plot(ax=axes[1], color='orange', kind='line')
ax3=df.rr.plot(ax=axes[2], color='blue', kind='line')
ax4=bar_df.occ_count.plot(ax=axes[3], kind='bar')
Принимая во внимание, что код в моем коде, который дублирует эту проблему является
fig, axes = plt.subplots(nrows=4, ncols=1, figsize=(16,10), sharex=True)
ax1=df.hr.plot(ax=axes[0], color='green', kind='line')
ax2=df.act.plot(ax=axes[1], color='orange', kind='line')
ax3=df.rr.plot(ax=axes[2], color='blue', kind='line')
ax4=bar_df.occ_count.plot(ax=axes[3], kind='bar')
Основное различие заключается в том, что в моем коде в DataFrames генерируются и не только погрузил от s3. Есть ли неявная конфигурация внутри DataFrame, которая может каким-то образом сделать это? Я просто использовал df.to_csv
, чтобы сбросить эти 2 кадра данных в S3.
Вы пробовали вызова barplot первым, а линия участки потом? Вероятно, вы получаете нежелательную вспомогательную активность из повторной выборки, но это не полный пример. По крайней мере, дайте фиктивные данные и посмотрите, сколько строк вы хотите воспроизвести. [MVCE] – cphlewis
@cphlewis см. Мое обновление в сообщении. – leonsas
может быть, что индексы тонко отличаются друг от друга, попробуйте вызвать 'reset_index' на ваших данных-кадрах перед построением – maxymoo