我这样做
plt.xticks(np.arange(0,100, step = 10))
plt.xlim(0, 100)
我的问题围绕着将自定义xticks应用于每个子图。 无论我放置多少次或在哪里放线
filter
他们最终只适用于第4个子情节。 如何为每个子图定义自定义xticks?
答案 0 :(得分:1)
您必须在轴上应用操作,plt
操纵最后使用的轴。您应该阅读the documentation, what kind of manipulations you can perform on the Axes class.。例如,您需要set_xticks
和set_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()
示例输出: