我正在尝试使用 pylab/matplotlib 绘制绘图,并且 x 轴有两组不同的单位。所以我希望情节有两个不同刻度的轴,一个在顶部,一个在底部。(例如,一个有英里,一个有公里左右。)
如下图所示(但我想要多个 X 轴,但这并不重要。)
有人知道pylab是否可以做到这一点?
我正在尝试使用 pylab/matplotlib 绘制绘图,并且 x 轴有两组不同的单位。所以我希望情节有两个不同刻度的轴,一个在顶部,一个在底部。(例如,一个有英里,一个有公里左右。)
如下图所示(但我想要多个 X 轴,但这并不重要。)
有人知道pylab是否可以做到这一点?
这可能有点晚了,但看看这样的事情是否会有所帮助:
http://matplotlib.sourceforge.net/examples/axes_grid/simple_axisline4.html
如示例图片所示,在“原始”框架旁边添加多个轴可以通过添加附加轴twinx
并配置其spines
属性来实现。
我认为这看起来与示例图片非常相似:
import matplotlib.pyplot as plt
import numpy as np
# Set font family
plt.rcParams["font.family"] = "monospace"
# Get figure, axis and additional axes
fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
ax3 = ax1.twinx()
ax4 = ax1.twinx()
# Make space on the right for the additional axes
fig.subplots_adjust(right=0.6)
# Move additional axes to free space on the right
ax3.spines["right"].set_position(("axes", 1.2))
ax4.spines["right"].set_position(("axes", 1.4))
# Set axes limits
ax1.set_xlim(0, 7)
ax1.set_ylim(0, 10)
ax2.set_ylim(15, 55)
ax3.set_ylim(200, 600)
ax4.set_ylim(500, 750)
# Add some random example lines
line1, = ax1.plot(np.random.randint(*ax1.get_ylim(), 8), color="black")
line2, = ax2.plot(np.random.randint(*ax2.get_ylim(), 8), color="green")
line3, = ax3.plot(np.random.randint(*ax3.get_ylim(), 8), color="red")
line4, = ax4.plot(np.random.randint(*ax4.get_ylim(), 8), color="blue")
# Set axes colors
ax1.spines["left"].set_color(line1.get_color())
ax2.spines["right"].set_color(line2.get_color())
ax3.spines["right"].set_color(line3.get_color())
ax4.spines["right"].set_color(line4.get_color())
# Set up ticks and grid lines
ax1.minorticks_on()
ax2.minorticks_on()
ax3.minorticks_on()
ax4.minorticks_on()
ax1.tick_params(direction="in", which="both", colors=line1.get_color())
ax2.tick_params(direction="in", which="both", colors=line2.get_color())
ax3.tick_params(direction="in", which="both", colors=line3.get_color())
ax4.tick_params(direction="in", which="both", colors=line4.get_color())
ax1.grid(axis='y', which='major')
plt.show()