2015-08-17 2 views
0

Я пытаюсь построить 3 подзаголовка на том же рисунке, и по какой-то причине код, который у меня есть, не работает. Первые два появляются на одном и том же рисунке, но последний - нет. Может кто-нибудь помочь мне:Установка 3 подзаголовков на том же рисунке

fig = plt.figure(0, figsize = (12,10)) 

fig.add_subplot(221) 
bike_gender.plot(kind='bar',title='Trip Duration by Gender', figsize= (9,7)) 
bar_plot.set_ylabel('Trip duration') 
bar_plot.set_xlabel('Gender') 
bar_plot.xaxis.set_ticklabels(['Men', 'Women', 'Unknown']) 
bar_plot.text (0, 400000, 'Men = 647,466', bbox=dict(facecolor='red', alpha=0.5)) 
bar_plot.text (1, 400000, 'Women = 202,136', bbox=dict(facecolor='red', alpha=0.5)) 
bar_plot.text (2, 400000, 'Unknown = 119,240', bbox=dict(facecolor='red', alpha=0.5)) 

fig.add_subplot(222) 
labels = 'Subscriber \n (849,778)', 'Customer \n (119,064)' 
pie_chart = bike_user.plot(kind='pie', title= 'Breakdown of usertype', labels = labels, autopct='%1.1f%%', figsize=(9,7)) 

fig.add_subplot(212) 
frequencies.plot(kind='bar',color=['blue','yellow','green'], figsize=(12, 4), stacked=True) 

plt.show() 

ответ

1

Альтернативный способ заключается в использовании gridspec

import pandas as pd 
import numpy as np 
import matplotlib.pyplot as plt 
import matplotlib.gridspec as gridspec 

fig = plt.figure() 

data = pd.DataFrame(np.random.rand(10,2)) 

gs = gridspec.GridSpec(2,2) 

ax1=fig.add_subplot(gs[0,0]) 
ax2=fig.add_subplot(gs[0,1]) 
ax3=fig.add_subplot(gs[1,:]) 

data.plot(ax = ax1) 
data.plot(ax = ax2) 
data.plot(ax = ax3) 

plt.show() 

enter image description here

+0

Спасибо, Том! Это работало. – AMACK13

1

Последний участок должен фактически отображаться на рисунке, но за вторым.

Это потому, что ваш третий подзаголовок находится в сетке, форма которой отличается от того, что вы уже используете. Вы сначала 2 сюжета находятся на сетке 2x2 (add_subplot(22.)), а последняя - на сетке 2x1 (add_subplot(21.)).

Как быстро исправить, вы можете попробовать для вашего последнего участка:

fig.add_subplot(223) 

И он должен работать.

Тем не менее, вы, кажется, хотите сделать участок с пандами и отобразить их в определенном axes из figure с подзаговорами. Для этого следует использовать:

fig, ax = plt.subplots(2,2, figsize=(12,10)) 
bike_gender.plot(kind="bar", ax=ax[0], title='Trip Duration by Gender') 
bike_user.plot(kind='pie', ax=ax[1], title= 'Breakdown of usertype') 
frequencies.plot(kind='bar', ax=ax[2], color=['blue','yellow','green'], stacked=True) 

НТН

+0

почему-то до сих пор не работает; он все еще появляется на двух разных фигурах. Я хотел, чтобы первые два были на вершине, а третий - внизу. Спасибо за помощь! – AMACK13

+0

Ну, это странно. Если вы используете 4 строки, которые я написал, у вас не должно быть никаких проблем. Если у вас есть, предоставьте минимальный рабочий пример, который воспроизводит проблему. – jrjc

Смежные вопросы