2017-05-16 4 views
1

Ich änderte die example code und bekam die Tabelle zu arbeiten, wie ich will, aber es gibt immer noch eine Box, wo der Graph unter die Tabelle gehen würde. Ich möchte diese Box loswerden. Beachten Sie, dass die Tabelle 5 Zeilen einschließlich Spaltenmarkierungen und 8 Spalten einschließlich Zeilenmarkierungen enthält.Python Matplotlib wie bekomme ich nur Tabelle

Der entsprechende Code:

columns = ('Last', 'High', 'Low', 'Chg.', 'Chg. %', 'Time', 'T?') 
rows = ['Gold', 'Silver', 'Copper', 'Aluminum'] 
scatter_x = (1, 2, 3) 
scatter_y = (1224.53, 1231.76, 1228.70) 
fig = plt.figure(1) 
gridspec.GridSpec(4,3) 

#Table - Main table 
plt.subplot2grid((4,3), (0,0), colspan=2, rowspan=2) 
plt.table(cellText=data_list, 
      rowLabels=rows, 
      colLabels=columns, 
      loc='top') 
plt.subplots_adjust(left=0.2,top=0.8) 
plt.yticks([]) 
plt.xticks([]) 

#Gold Scatter - Small scatter to the right 
plt.subplot2grid((4,3), (0,2)) 
plt.scatter(scatter_x, scatter_y) 
plt.ylabel('Gold Last') 


fig.tight_layout() 
fig.set_size_inches(w=6, h=5) 
fig_name = 'plot.png' 
fig.savefig(fig_name) 
plt.show() 

Und es ergibt dies: See the empty square below the table

A tack auf Frage: Wie würde ich die Polsterung auf dem Tisch, so dass es nicht an der Spitze abgeschnitten und links ?

Antwort

2

Die Tabelle kann an verschiedenen Positionen innerhalb oder außerhalb der Achsen hinzugefügt werden. Dies wird durch das Argument loc bestimmt. In diesem Fall scheint es, dass Sie den Tisch nicht außerhalb der Achsen haben wollen, sondern darin. Verwenden Sie daher keines von "top", "bottom", "left", "right", sondern stattdessen z. loc="upper center".

Sie können die Achsen dann selbst ausblenden, über ax.axis("off"). Damit die Zeilenköpfe nicht durch den Seitenrand abgeschnitten werden, können Sie sich entscheiden, tight layout nicht zu verwenden.

Komplettes Beispiel:

import matplotlib.pyplot as plt 
import numpy as np 

columns = ('Last', 'High', 'Low', 'Chg.', 'Chg. %', 'Time', 'T?') 
rows = ['Gold', 'Silver', 'Copper', 'Aluminum'] 

data_list = np.random.randint(10,90, size=(len(rows), len(columns))) 
scatter_x = (1, 2, 3) 
scatter_y = (1224.53, 1231.76, 1228.70) 

fig = plt.figure(1) 
fig.subplots_adjust(left=0.2,top=0.8, wspace=1) 

#Table - Main table 
ax = plt.subplot2grid((4,3), (0,0), colspan=2, rowspan=2) 
ax.table(cellText=data_list, 
      rowLabels=rows, 
      colLabels=columns, loc="upper center") 

ax.axis("off") 

#Gold Scatter - Small scatter to the right 
plt.subplot2grid((4,3), (0,2)) 
plt.scatter(scatter_x, scatter_y) 
plt.ylabel('Gold Last') 

fig.set_size_inches(w=6, h=5) 
plt.show() 

enter image description here

Verwandte Themen