我想在2乘3设置中绘制5个 Dataframe (即2行和3列)。这是我的代码:然而,在第6个位置(第二行和第三列)有一个额外的空图,我想摆脱它。我想知道如何删除它,以便我在第一行有三个地块,在第二行有两个地块。
import matplotlib.pyplot as plt
fig, axes = plt.subplots(nrows=2, ncols=3)
fig.set_figheight(8)
fig.set_figwidth(15)
df[2].plot(kind='bar',ax=axes[0,0]); axes[0,0].set_title('2')
df[4].plot(kind='bar',ax=axes[0,1]); axes[0,1].set_title('4')
df[6].plot(kind='bar',ax=axes[0,2]); axes[0,2].set_title('6')
df[8].plot(kind='bar',ax=axes[1,0]); axes[1,0].set_title('8')
df[10].plot(kind='bar',ax=axes[1,1]); axes[1,1].set_title('10')
plt.setp(axes, xticks=np.arange(len(observations)), xticklabels=map(str,observations),
yticks=[0,1])
fig.tight_layout()
6条答案
按热度按时间6uxekuva1#
试试这个:
创建子图更灵活的方法是
fig.add_axes()
方法。参数是一个rect坐标列表:fig.add_axes([x, y, xsize, ysize])
。这些值是相对于画布大小的,因此xsize
的0.5
意味着子图的宽度是窗口的一半。9njqaruj2#
或者,使用
axes
方法set_axis_off()
:kpbwa7wx3#
如果你知道要删除哪个图,你可以给予索引并删除如下:
myss37ts4#
关闭所有轴,并仅在绘制坐标轴时逐个打开坐标轴。那么你不需要提前知道指数,例如:
kfgdxczn5#
以前的解决方案不适用于
sharex=True
。如果你有,请考虑下面的解决方案,它也涉及二维子图布局。二维
fig, axes = plot.subplots(2,2, sharex=True)
r7knjye26#
Johannes的答案的一个更懒的版本是删除任何没有添加数据的坐标轴。这避免了维护要移除哪些轴的规范。