Python 在Matplotlib中创建具有子地块的帧
我想制作一个由4个图形组成的图形,但在每个图形中有三个子图。我正在使用Matplotlib的当前版本 我展示了我的代码,以便绘制每个单独的图形,正如我之前所评论的,重点是如何将这4个图放在一起,从而生成一个单独的图形Python 在Matplotlib中创建具有子地块的帧,python,matplotlib,Python,Matplotlib,我想制作一个由4个图形组成的图形,但在每个图形中有三个子图。我正在使用Matplotlib的当前版本 我展示了我的代码,以便绘制每个单独的图形,正如我之前所评论的,重点是如何将这4个图放在一起,从而生成一个单独的图形 filename1 = "file1.txt" filename2 = "file2.txt" filename3 = "file3.txt" datalist1 = np.loadtxt(filename1) datalist2 = np.loadtxt(filename2)
filename1 = "file1.txt"
filename2 = "file2.txt"
filename3 = "file3.txt"
datalist1 = np.loadtxt(filename1)
datalist2 = np.loadtxt(filename2)
datalist3 = np.loadtxt(filename3)
f, (ax1, ax2, ax3) = plt.subplots(3, sharex=True, sharey=True)
#First subplot
ax1.plot(datalist1[:,0], datalist1[:,1], 'k-')
ax1.plot(datalist2[:,0], datalist2[:,1], 'b-')
ax1.plot(datalist2[:,0], datalist2[:,2], 'g-')
ax1.plot(datalist2[:,0], datalist2[:,3], 'r-')
ax1.plot(datalist3[:,0], datalist3[:,1], 'k--')
ax1.set_ylim(-1.2, 1.2)
ax1.set_xlim(0, 10)
major_ticks_x = np.arange(0.0, 11, 2.0)
minor_ticks_x = np.arange(0.0, 11, 1.0)
major_ticks_y = np.arange(-1, 1.05, 1.0)
minor_ticks_y = np.arange(-1, 1.05, 0.25)
ax1.set_yticks(major_ticks_y)
ax1.set_yticks(minor_ticks_y, minor=True)
#Second subplot
ax2.plot(datalist1[:,0], datalist1[:,2], 'k-')
ax2.plot(datalist2[:,0], datalist2[:,4], 'b-')
ax2.plot(datalist2[:,0], datalist2[:,5], 'g-')
ax2.plot(datalist2[:,0], datalist2[:,6], 'r-')
ax2.plot(datalist3[:,0], datalist3[:,1], 'k--')
ax2.set_ylim(-1.2, 1.2)
ax2.set_xlim(0, 10)
ax2.set_yticks(major_ticks_y)
ax2.set_yticks(minor_ticks_y, minor=True)
#Third subplot
ax3.plot(datalist1[:,0], datalist1[:,3], 'k-')
ax3.plot(datalist2[:,0], datalist2[:,7], 'b-')
ax3.plot(datalist2[:,0], datalist2[:,8], 'g-')
ax3.plot(datalist2[:,0], datalist2[:,9], 'r-')
ax3.plot(datalist3[:,0], datalist3[:,1], 'k--')
ax3.set_ylim(-1.2, 1.2)
ax3.set_xlim(0, 10)
ax3.set_yticks(major_ticks_y)
ax3.set_yticks(minor_ticks_y, minor=True)
ax3.set_xticks(major_ticks_x)
ax3.set_xticks(minor_ticks_x, minor=True)
ax3.set_xlabel(r"$t$")
f.subplots_adjust(hspace=0.0)
plt.setp([a.get_xticklabels() for a in f.axes[:-1]], visible=False)
我想得到的图是这样的,在一个图中:
有人知道怎么做??谢谢你的关注。好的,我咬一口。不清楚您想要什么,但我假设您想要12个子图(6行,2列),分成4组,共享x轴 像往常一样,创建子图和绘图很容易。共享x轴也很简单,但需要一些手动工作。可以在创建子地块期间设置共享x轴,也可以在创建子地块之后对其进行修改。我认为修改后更简单 对不起,中间的手动部分很可能是自动化的。
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
fig, axx = plt.subplots(6, 2, figsize=(10,14))
## merge axis
axx[0, 0].get_shared_x_axes().join(axx[0, 0], axx[2, 0])
axx[0, 0].set_xticklabels([])
axx[1, 0].get_shared_x_axes().join(axx[1, 0], axx[2, 0])
axx[1, 0].set_xticklabels([])
axx[0, 1].get_shared_x_axes().join(axx[0, 1], axx[2, 1])
axx[0, 1].set_xticklabels([])
axx[1, 1].get_shared_x_axes().join(axx[1, 1], axx[2, 1])
axx[1, 1].set_xticklabels([])
axx[3, 0].get_shared_x_axes().join(axx[3, 0], axx[5, 0])
axx[3, 0].set_xticklabels([])
axx[4, 0].get_shared_x_axes().join(axx[4, 0], axx[5, 0])
axx[4, 0].set_xticklabels([])
axx[3, 1].get_shared_x_axes().join(axx[3, 1], axx[5, 1])
axx[3, 1].set_xticklabels([])
axx[4, 1].get_shared_x_axes().join(axx[4, 1], axx[5, 1])
axx[4, 1].set_xticklabels([])
# plot some data
for i, row in enumerate(axx):
for j, cell in enumerate(row):
if i <= 2:
cell.plot(np.random.rand(100))
else:
cell.plot(np.random.rand(200))
导入matplotlib.pyplot作为plt
将numpy作为np导入
图=plt.图()
图,axx=plt.子批次(6,2,figsize=(10,14))
##合并轴
axx[0,0]。获取共享的轴()。连接(axx[0,0],axx[2,0])
axx[0,0]。设置xticklabels([])
axx[1,0]。获取共享的轴()。加入(axx[1,0],axx[2,0])
axx[1,0]。设置字符串([])
axx[0,1]。获取共享的轴()。连接(axx[0,1],axx[2,1])
axx[0,1]。设置字符串([])
axx[1,1]。获取共享的轴()。连接(axx[1,1],axx[2,1])
axx[1,1]。设置xticklabel([])
axx[3,0]。获取共享的轴()。连接(axx[3,0],axx[5,0])
axx[3,0]。设置xticklabels([])
axx[4,0]。获取共享的轴()。连接(axx[4,0],axx[5,0])
axx[4,0]。设置xticklabels([])
axx[3,1]。获取共享的轴()。连接(axx[3,1],axx[5,1])
axx[3,1]。设置字符串([])
axx[4,1]。获取共享的轴()。连接(axx[4,1],axx[5,1])
axx[4,1]。设置字符串([])
#绘制一些数据
对于i,枚举中的行(axx):
对于j,枚举(行)中的单元格:
如果我有任何理由,你想要4个图形或12个子图在一个图形与共享x轴可以吗?因为在一个图形中使用12个子图确实可以完成。啊,这是一个很好的观点,事实上我倾向于将图形放在共享x轴和y轴的位置,但必须能够区分每个图形,如a),b),c),d) 。如果在matplotlib中,画布正好由一个图形组成,并且该图形可以有任意多个子图,那么您可以重新表述您的问题。在图形中放置图形是不可能的。