Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
移动表格位置matplotlib python_Python_Matplotlib_Plot_Figure - Fatal编程技术网

移动表格位置matplotlib python

移动表格位置matplotlib python,python,matplotlib,plot,figure,Python,Matplotlib,Plot,Figure,我使用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 =

我使用
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()

在表格中添加
bbox
参数。(代替loc)

bbox
参数接受4个输入:X、Y、Width和Height。因此,X和Y是左下角的坐标。上面的高度太小了

编辑:创建游戏空间

这样做的目的是以同样的方式使
ax
更小

box = ax.get_position()
a.set_position([box.x0, box.y0, box.width * 0.9, box.height])
编辑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()
输出:


在表格中添加
bbox
参数。(代替loc)

bbox
参数接受4个输入:X、Y、Width和Height。因此,X和Y是左下角的坐标。上面的高度太小了

编辑:创建游戏空间

这样做的目的是以同样的方式使
ax
更小

box = ax.get_position()
a.set_position([box.x0, box.y0, box.width * 0.9, box.height])
编辑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()
输出:

将工作台放置在轴外侧 您可以使用
loc=“right”
将工作台定位在轴的右侧。类似于
fig.subplots\u adjust(right=0.8)
的内容将为其留出足够的空间

import matplotlib.pyplot as plt
import matplotlib as mpl
plt.style.use('ggplot')

fig, ax = plt.subplots(figsize = (10,6))
fig.subplots_adjust(right=0.8)
ax.axis('equal')

ax.grid(False)

xy = 0,0
circle = mpl.patches.Circle(xy, 160, lw = 3, edgecolor = 'black', 
                            facecolor = '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,
          loc='right', zorder=3)

ax.autoscale()
plt.show()

把桌子放在自己的轴上 您可以将工作台放置在现有轴旁边的新轴中。这样做的好处是不需要再使用列宽或子地块参数

import matplotlib.pyplot as plt
import matplotlib as mpl
plt.style.use('ggplot')

fig, (ax, ax_table) = plt.subplots(ncols=2, figsize = (10,6),
                                  gridspec_kw=dict(width_ratios=[3,1]))
ax.axis('equal')
ax_table.axis("off")

ax.grid(False)

xy = 0,0
circle = mpl.patches.Circle(xy, 160, lw = 3, edgecolor = 'black', 
                            facecolor = '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 = ax_table.table(cellText=table_vals,
          rowLabels=row_labels,
          colLabels=col_labels,
          loc='center')

ax.autoscale()
plt.show()

将工作台放置在轴外侧 您可以使用
loc=“right”
将工作台定位在轴的右侧。类似于
fig.subplots\u adjust(right=0.8)
的内容将为其留出足够的空间

import matplotlib.pyplot as plt
import matplotlib as mpl
plt.style.use('ggplot')

fig, ax = plt.subplots(figsize = (10,6))
fig.subplots_adjust(right=0.8)
ax.axis('equal')

ax.grid(False)

xy = 0,0
circle = mpl.patches.Circle(xy, 160, lw = 3, edgecolor = 'black', 
                            facecolor = '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,
          loc='right', zorder=3)

ax.autoscale()
plt.show()

把桌子放在自己的轴上 您可以将工作台放置在现有轴旁边的新轴中。这样做的好处是不需要再使用列宽或子地块参数

import matplotlib.pyplot as plt
import matplotlib as mpl
plt.style.use('ggplot')

fig, (ax, ax_table) = plt.subplots(ncols=2, figsize = (10,6),
                                  gridspec_kw=dict(width_ratios=[3,1]))
ax.axis('equal')
ax_table.axis("off")

ax.grid(False)

xy = 0,0
circle = mpl.patches.Circle(xy, 160, lw = 3, edgecolor = 'black', 
                            facecolor = '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 = ax_table.table(cellText=table_vals,
          rowLabels=row_labels,
          colLabels=col_labels,
          loc='center')

ax.autoscale()
plt.show()


当然,您可以缩小圆圈,或者修改
xlim
ylim
,或者将桌子的位置更改为角落。。。可能性是无穷的。我已经更新了这个问题。形状是按比例的对不起,所以我不能改变。如果我更改表格的位置,它将离开绘图,那么
上中
而不是
右上
呢?否则,按照课程答案中的建议使用
bbox
,您可以缩小圆圈,或者修改
xlim
ylim
,或者将桌子的位置更改为角落。。。可能性是无穷的。我已经更新了这个问题。形状是按比例的对不起,所以我不能改变。如果我更改表格的位置,它将离开绘图,那么
上中
而不是
右上
呢?否则,按照回答hanks@Mathieu中的建议使用
bbox
。是否还需要扩展绘图大小。我可以把它挤进去,但最好有更多的空间来玩。@Maxibon是的,你可以用编辑中的代码修改图形上
轴的位置和大小。假设你想把图放在左边,把桌子放在右边,你的圆边上的空间是无用的,因此你要玩宽度和x位置。@Maxibon没有更多关于你想做什么的知识,我帮不了你。谢谢@Mathieu。如果是
ax.set\u位置([box.x0,box.y0,box.width*0.9,box.height])
而不是
a.set\u位置
@Maxibon那么你需要使用这些值,使用
box.width*0.9
你将宽度减少10%。您可能需要更多,您可能需要将拐角移动到另一个位置(x0,y0),等等……谢谢@Mathieu。是否还需要扩展绘图大小。我可以把它挤进去,但最好有更多的空间来玩。@Maxibon是的,你可以用编辑中的代码修改图形上
轴的位置和大小。假设你想把图放在左边,把桌子放在右边,你的圆边上的空间是无用的,因此你要玩宽度和x位置。@Maxibon没有更多关于你想做什么的知识,我帮不了你。谢谢@Mathieu。如果是
ax.set\u位置([box.x0,box.y0,box.width*0.9,box.height])
而不是
a.set\u位置
@Maxibon那么你需要使用这些值,使用
box.width*0.9
你将宽度减少10%。您可能需要更多,您可能需要将拐角移动到另一个位置(x0、y0),等等……谢谢@ImportanceOfBeingErnest。这很好。有没有可能把它和绘图放在同一个轴上呢。有关更多详细信息,请参见问题谢谢@ImportanceOfBeingErnest。这很好。有没有可能把它和绘图放在同一个轴上呢。请参阅问题了解更多详细信息