一个图中的两个(或更多)图,在python中具有不同的x轴和y轴刻度

Ant*_*ser 12 python plot matplotlib

我想在一个轴对象上有3个图形,例如:

#example x- and y-data
x_values1=[1,2,3,4,5]
y_values1=[1,2,3,4,5]

x_values2=[-1000,-800,-600,-400,-200]
y_values2=[10,20,39,40,50]

x_values3=[150,200,250,300,350]
y_values3=[10,20,30,40,50]


#make axes
fig=plt.figure()
ax=fig.add_subplot(111)
Run Code Online (Sandbox Code Playgroud)

现在我想将所有三个数据集添加到ax.但它们不应该共享任何x轴或y轴(从那以后因为不同的尺度,一个会比另一个更小.我需要像ax.twinx(),ax.twiny()这样的东西,但是x都是 - 和y轴需要是独立的.

我想这样做,因为我想把两个附加的图(和第三个图,类似于第二个图)放在一个图中("将它们放在彼此的顶部"). Plot1 Plot2

然后,我将第二个绘图的x/y标签(和/或刻度,限制)放在右/上,另一个绘图的x/y限制在底部/左侧.我不需要3. plot的x/y标签.

我该怎么做呢?

Imp*_*est 24

这个想法是在同一个位置创建三个子图.为了确保,它们将被识别为不同的图,它们的属性需要不同 - 实现这一目标的最简单方法就是提供不同的标签ax=fig.add_subplot(111, label="1").

其余的只是调整所有轴参数,这样得到的图表看起来很吸引人.设置所有参数需要做一些工作,但以下内容应该可以满足您的需求.

在此输入图像描述

import matplotlib.pyplot as plt

x_values1=[1,2,3,4,5]
y_values1=[1,2,2,4,1]

x_values2=[-1000,-800,-600,-400,-200]
y_values2=[10,20,39,40,50]

x_values3=[150,200,250,300,350]
y_values3=[10,20,30,40,50]


fig=plt.figure()
ax=fig.add_subplot(111, label="1")
ax2=fig.add_subplot(111, label="2", frame_on=False)
ax3=fig.add_subplot(111, label="3", frame_on=False)

ax.plot(x_values1, y_values1, color="C0")
ax.set_xlabel("x label 1", color="C0")
ax.set_ylabel("y label 1", color="C0")
ax.tick_params(axis='x', colors="C0")
ax.tick_params(axis='y', colors="C0")

ax2.scatter(x_values2, y_values2, color="C1")
ax2.xaxis.tick_top()
ax2.yaxis.tick_right()
ax2.set_xlabel('x label 2', color="C1") 
ax2.set_ylabel('y label 2', color="C1")       
ax2.xaxis.set_label_position('top') 
ax2.yaxis.set_label_position('right') 
ax2.tick_params(axis='x', colors="C1")
ax2.tick_params(axis='y', colors="C1")

ax3.plot(x_values3, y_values3, color="C3")
ax3.set_xticks([])
ax3.set_yticks([])

plt.show()
Run Code Online (Sandbox Code Playgroud)