将xticks添加到matplotlib中的子图

时间:2018-04-10 23:44:56

标签: python matplotlib

我这样做

plt.xticks(np.arange(0,100, step = 10))
plt.xlim(0, 100)

我的问题围绕着将自定义xticks应用于每个子图。 无论我放置多少次或在哪里放线

filter

他们最终只适用于第4个子情节。 如何为每个子图定义自定义xticks?

1 个答案:

答案 0 :(得分:1)

您必须在轴上应用操作,plt操纵最后使用的轴。您应该阅读the documentation, what kind of manipulations you can perform on the Axes class.。例如,您需要set_xticksset_xlim

def example_plot(ax, somedata, somedata2, title, xlab, ylab, fontsize=12):

    ax.plot(somedata, color='b')
    ax.plot(somedata2, color='g')
    ax.locator_params(nbins=3)
    ax.set_xlabel(xlab, fontsize=8)
    ax.set_ylabel(ylab, fontsize=10)
    ax.set_title(title, fontsize=10)

import matplotlib.pyplot as plt
import numpy as np 
fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(nrows=2, ncols=2)
ax1.grid(color='r', linestyle='-', linewidth=1)
ax2.grid(color='r', linestyle='-', linewidth=1)
ax3.grid(color='r', linestyle='-', linewidth=1)
ax4.grid(color='r', linestyle='-', linewidth=1)

example_plot(ax1,np.random.rand(10),np.random.rand(20), "A", "x A", "y A") 
example_plot(ax2,np.random.rand(30),np.random.rand(40), "B", "x B", "y B")
example_plot(ax3,np.random.rand(10),np.random.rand(40), "C", "x C", "y C")
example_plot(ax4,np.random.rand(20),np.random.rand(50), "D", "x D", "y D")

plt.tight_layout(pad= 0.4, w_pad= 0.5, h_pad = 1.0) 

ax1.set_xticks(range(0, 20, 5))
ax2.set_xlim(10, 40)
ax3.set_xlim(0, 50)
ax4.set_xticks(range(20, 50, 5))

plt.show()

示例输出:

enter image description here