有没有一种方法可以让这个子地块看起来写得更少?

2024-06-28 20:49:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图学习一些python,并尝试绘制一些数据。当然,我能够做到这一点,但为了实现我想要的外观,我添加了太多的代码。我想有一种更简单的方法

plots

我想说的是

  1. 为所有子批次设置相同的x轴限制
  2. 移除打印框,只保留x轴

为了做到这一点,我必须写下所有这些

fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(10,10))
axes[0, 0].plot(data1['Hz'], data1['int_n'])
axes[0, 1].plot(data2['Hz'], data2['int_n'])
axes[1, 0].plot(data3['Hz'], data3['int_n'])
axes[1, 1].plot(data4['Hz'], data4['int_n'])
axes[0, 0].set_xlim(100, 20)
axes[0, 1].set_xlim(100, 20)
axes[1, 0].set_xlim(100, 20)
axes[1, 1].set_xlim(100, 20)
axes[0, 0].set_title('Sample 1')
axes[0, 1].set_title('Sample 2')
axes[1, 0].set_xlabel('Hz')
axes[1, 1].set_xlabel('Hz')
axes[0, 0].set_ylabel('Experiment 1')
axes[1, 0].set_ylabel('Experiment 2')
axes[0, 0].get_yaxis().set_ticks([])
axes[0, 1].get_yaxis().set_ticks([])
axes[1, 0].get_yaxis().set_ticks([])
axes[1, 1].get_yaxis().set_ticks([])
axes[0, 0].spines['right'].set_visible(False)
axes[0, 0].spines['top'].set_visible(False)
axes[0, 0].spines['left'].set_visible(False)
axes[0, 1].spines['right'].set_visible(False)
axes[0, 1].spines['top'].set_visible(False)
axes[0, 1].spines['left'].set_visible(False)
axes[1, 0].spines['right'].set_visible(False)
axes[1, 0].spines['top'].set_visible(False)
axes[1, 0].spines['left'].set_visible(False)
axes[1, 1].spines['right'].set_visible(False)
axes[1, 1].spines['top'].set_visible(False)
axes[1, 1].spines['left'].set_visible(False)
fig.tight_layout()

我想有一个简单的方法可以用较少的文本来完成,但我不知道如何去做


Tags: rightfalsegetplottopleftintset
1条回答
网友
1楼 · 发布于 2024-06-28 20:49:28

可以在axes的展开实例上使用for循环。为了使事情变得更简单,您还可以使用zip并同时迭代data实例。例如:

fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(10,10))

for ax, data in zip(axes.flat, (data1, data2, data3, data4)):

    # Do these to all axes instances
    ax.plot(data['Hz'], data['int_n'])    
    ax.set_xlim(100, 20)
    ax.get_yaxis().set_ticks([])

    # loop over the spines we want to turn off
    for spine in ['right', 'top', 'left']:
        ax.spines[spine].set_visible(False)

# These things only apply to one or two axes, so are outside the loop
axes[0, 0].set_title('Sample 1')
axes[0, 1].set_title('Sample 2')
axes[1, 0].set_xlabel('Hz')
axes[1, 1].set_xlabel('Hz')
axes[0, 0].set_ylabel('Experiment 1')
axes[1, 0].set_ylabel('Experiment 2')

fig.tight_layout()

相关问题 更多 >