2 python plot matplotlib figure
我创建了一个figure显示形状并table使用matplotlib. 问题是它是如何产生的。它们相互重叠。形状是按比例绘制的,所以我不想改变它。我想知道如何改变绘图的整体大小或移动表格的位置。
import matplotlib.pyplot as plt
import matplotlib as mpl
fig, ax = plt.subplots(figsize = (10,6))
ax.axis('equal')
plt.style.use('ggplot')
ax.grid(False)
xy = 0,0
circle = mpl.patches.Circle(xy, 160, lw = 3, edgecolor = 'black', color = 'b', alpha = 0.1, zorder = 5)
ax.add_patch(circle)
col_labels=['A','B','C','D','E']
row_labels=['diff','total']
table_vals=[['','','','',''],['','','','','']]
the_table = plt.table(cellText=table_vals,
colWidths = [0.05]*5,
rowLabels=row_labels,
colLabels=col_labels,
bbox = [0.8, 0.4, 0.2, 0.2])
ax.autoscale()
plt.show()
Run Code Online (Sandbox Code Playgroud)
将bbox参数添加到您的表中。(而不是loc)
the_table = plt.table(cellText=table_vals,
colWidths = [0.05]*5,
rowLabels=row_labels,
colLabels=col_labels,
bbox = [0.2, 0.4, 0.4, 0.02])
Run Code Online (Sandbox Code Playgroud)
该bbox参数需要 4 个输入:X、Y、宽度、高度。因此X和Y是左下角的坐标。上面,高度太小了。
编辑:创建可以玩的空间
ax这个想法是以同样的方式使较小的。
box = ax.get_position()
a.set_position([box.x0, box.y0, box.width * 0.9, box.height])
Run Code Online (Sandbox Code Playgroud)
编辑2:试图把桌子放在右边。正如我所说,你需要调整盒子的值,我尝试了大约 10 次才得到这个。我使用spyder作为IDE,所以它非常快。
import matplotlib.pyplot as plt
import matplotlib as mpl
fig, ax = plt.subplots(figsize = (10,6))
ax.axis('equal')
plt.style.use('ggplot')
ax.grid(False)
xy = 0,0
circle = mpl.patches.Circle(xy, 160, lw = 3, edgecolor = 'black', color = 'b', alpha = 0.1, zorder = 5)
ax.add_patch(circle)
col_labels=['A','B','C','D','E']
row_labels=['diff','total']
table_vals=[['','','','',''],['','','','','']]
the_table = plt.table(cellText=table_vals,
colWidths = [0.05]*5,
rowLabels=row_labels,
colLabels=col_labels,
bbox = [1.1, 0.5, 0.35, 0.1])
box = ax.get_position()
ax.set_position([box.x0, box.y0, box.width * 0.8, box.height])
ax.autoscale()
plt.show()
Run Code Online (Sandbox Code Playgroud)
输出: