对不起,我的python技术很差,我对这种语言还不太熟悉!
同样,我对目前从twinx()获得的结果感到困惑我不知道为什么当我对X轴进行配对时,右手Y轴上的记号似乎加倍。

import matplotlib.pyplot as plt

x = linspace(0,2*pi,100)
y = sin(x) + 100*rand(len(x))
z = cos(x) + 100*rand(len(x))
data = []
data.append(y)
data.append(z)

fig = plt.figure(1)
for kk in range(len(data)):
    ax1 = fig.add_subplot(111)
    ax1.plot(x.T, data[kk], 'b.-')

plt.show()

第一个情节(在我看来)显示了正确的行为
fig2 = plt.figure(2)
for kk in range(len(data)):
    ax3 = fig2.add_subplot(111)
    ax4 = ax3.twinx()
    ax4.plot(x.T, data[kk], 'b.-')

plt.show()

而第二个情节(我所做的一切都是翻转轴)似乎有很差的勾勾动作,其中两个“曲线”每个都有自己的刻度标记。
任何关于这可能发生的原因的想法都将非常感谢!

最佳答案

因为这就是twinx应该做的:)
严肃地说,twinx的要点是在同一个图上创建一个独立的y轴。默认情况下,它显示了右侧的第二个独立Y轴的刻度。
我们的想法是,您可以使用twinx(或twiny,如果您想要两个独立的x轴)来执行类似的操作:

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots()
ax2 = ax.twinx()

x = np.linspace(0, 10, 100)

ax.plot(x, np.sin(x), color='blue')
ax.set_ylabel(ylabel='Y-Value 1', color='blue')
ax.set_xlabel('Same X-values')

ax2.plot(x, x**3, color='green')
ax2.set_ylabel('Y-Value 2', color='green')

plt.show()

如果只希望两条曲线共享同一个轴,只需将它们绘制在同一个轴上。例如。:
import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots()

x = np.linspace(0, 10, 100)
ax.plot(x, x, label='$y=x$')
ax.plot(x, 3 * x, label='$y=3x$')
ax.legend(loc='upper left')

ax.set(xlabel='Same X-values', ylabel='Same Y-values')

plt.show()

10-06 14:12