2017-08-24 4 views
-1

Je voudrais tracer 2 figures avec la fonction de sous-placage et avec deux axes x différents (format datetime).Les xlabels n'apparaissent que dans l'un des deux sous-plans

j'ai fait le code suivant:

fig=plt.figure() 
fig.set_size_inches(10,10) 
plt.subplot(211) 
plt.gca().xaxis.set_major_formatter(dates.DateFormatter('%H:%M:%S')) 
plt.gca().xaxis.set_major_locator(dates.MinuteLocator()) 
plt.plot(WaveLab_df['Time'],WaveLab_df['Active_Power_Starboard_W']) 
plt.plot(WaveLab_df['Time'],WaveLab_df['Active_Power_Portside_W']) 
plt.gcf().autofmt_xdate() 
plt.subplot(212) 
plt.plot(df_tempS['DateTime'],df_tempS['Power[W]']) 

et j'obtenir: My Figure

Le fait est que dans la deuxième parcelle je voudrais avoir le même type d'étiquette x (heure-minute). Je veux pour chaque intrigue l'axe x.

J'ai essayé différentes combinaisons mais je n'ai pas réussi.

Est-ce que quelqu'un a une idée?

Merci!

Répondre

0

Vous devez utiliser le formatter et le localisateur sur les deux de vos intrigues secondaires.

fig=plt.figure() 
fig.set_size_inches(10,10) 

plt.subplot(211) 
plt.gca().xaxis.set_major_formatter(dates.DateFormatter('%H:%M:%S')) 
plt.gca().xaxis.set_major_locator(dates.MinuteLocator()) 
plt.plot(WaveLab_df['Time'],WaveLab_df['Active_Power_Starboard_W']) 
plt.plot(WaveLab_df['Time'],WaveLab_df['Active_Power_Portside_W']) 
plt.gcf().autofmt_xdate() 

plt.subplot(212) 
plt.plot(df_tempS['DateTime'],df_tempS['Power[W]']) 
plt.gca().xaxis.set_major_formatter(dates.DateFormatter('%H:%M:%S')) 
plt.gca().xaxis.set_major_locator(dates.MinuteLocator()) 
plt.gcf().autofmt_xdate() 
1

Je voudrais essayer d'appeler cette ligne à nouveau après avoir ouvert la deuxième sous-branche.

plt.gca().xaxis.set_major_formatter(dates.DateFormatter('%H:%M:%S')) 
+0

Il est un peu mieux, maintenant j'ai sur mon deuxième parcelle 3 valeurs au bon format (19:45:00, 19:50:00, 19:55:00). – Nathan

+0

Okay enfin j'ai décidé d'écrire les deux lignes: 'plt.gca(). Xaxis.set_major_formatter (dates.DateFormatter ('% H:% M:% S'))' 'plt.gca(). Xaxis .set_major_locator (dates.MinuteLocator()) ' Et je n'ai qu'un seul axe x mais avec le temps en minutes donc tout va bien. Je ne valide pas la réponse pour que quelqu'un puisse répondre s'il trouve la bonne réponse. Merci – Nathan

+0

@Nathan Mais n'est-ce pas déjà "la bonne" réponse? Qu'attendez-vous d'autre? – ImportanceOfBeingErnest