我在matplotlib中制作了一组子图(例如,3 x 2),但我的数据集少于6个。如何将剩余的子图留空?
这种安排如下:
+----+----+
| 0,0| 0,1|
+----+----+
| 1,0| 1,1|
+----+----+
| 2,0| 2,1|
+----+----+
这可能会持续几页,但在最后一页上,例如,2,1框中的5个数据集将为空。但是,我已将该数字声明为:
cfig,ax = plt.subplots(3,2)
因此,在子图2,1的空间中,有一组默认的轴,带有刻度和标签。如何以编程方式将该空间渲染为空白且没有轴?
答案 0 :(得分:99)
您可以随时隐藏您不需要的轴。例如,以下代码完全转动第6轴:
import matplotlib.pyplot as plt
hf, ha = plt.subplots(3,2)
ha[-1, -1].axis('off')
plt.show()
,结果如下图所示:
或者,请参阅问题Hiding axis text in matplotlib plots的已接受答案,了解如何保留轴但隐藏所有轴装饰(例如刻度线和标签)。
答案 1 :(得分:23)
自首次提出此问题以来,已向matplotlib添加了很多改进的subplot interface。在这里,您可以精确创建所需的子图,而无需隐藏附加内容。此外,子图可以跨越其他行或列。
import pylab as plt
ax1 = plt.subplot2grid((3,2),(0, 0))
ax2 = plt.subplot2grid((3,2),(0, 1))
ax3 = plt.subplot2grid((3,2),(1, 0))
ax4 = plt.subplot2grid((3,2),(1, 1))
ax5 = plt.subplot2grid((3,2),(2, 0))
plt.show()
答案 2 :(得分:3)
也可以使用Axes.set_visible()方法隐藏子图。
import matplotlib.pyplot as plt
import pandas as pd
fig = plt.figure()
data = pd.read_csv('sampledata.csv')
for i in range(0,6):
ax = fig.add_subplot(3,2,i+1)
ax.plot(range(1,6), data[i])
if i == 5:
ax.set_visible(False)
答案 3 :(得分:1)
在需要时创建子图是否可以选择?
import matplotlib
matplotlib.use("pdf")
import matplotlib.pyplot as plt
plt.figure()
plt.gcf().add_subplot(421)
plt.fill([0,0,1,1],[0,1,1,0])
plt.gcf().add_subplot(422)
plt.fill([0,0,1,1],[0,1,1,0])
plt.gcf().add_subplot(423)
plt.fill([0,0,1,1],[0,1,1,0])
plt.suptitle("Figure Title")
plt.gcf().subplots_adjust(hspace=0.5,wspace=0.5)
plt.savefig("outfig")