首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pyplot twinx()刻度线重叠

pyplot twinx()刻度线重叠
EN

Stack Overflow用户
提问于 2012-12-16 11:42:38
回答 2查看 4.7K关注 0票数 3

请原谅我糟糕的蟒蛇技能,我对这门语言相当陌生!

尽管如此,我还是对目前从twinx()得到的结果感到困惑。我不确定为什么当我双x轴时,右手边y轴上的刻度似乎是双倍。

代码语言:javascript
复制
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()

第一个图显示了(在我看来)正确的行为。

代码语言:javascript
复制
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()

而第二个图(我所做的一切就是翻转轴)似乎有很差的y刻度行为,其中两条“曲线”都有自己的刻度线。

任何关于为什么会发生这种情况的想法都将不胜感激!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-17 00:35:33

因为这就是twinx应该做的事情:)

不过,说真的,twinx的目的是在同一图上创建一个独立的y轴。默认情况下,它在绘图的右侧显示第二个独立y轴的记号。

我们的想法是,您可以使用twinx (如果您想要两个独立的x轴,则可以使用twiny )来做类似的事情:

代码语言:javascript
复制
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()

如果你只是想要两条曲线共享相同的轴,只需将它们绘制在相同的轴上。例如:

代码语言:javascript
复制
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()

票数 2
EN

Stack Overflow用户

发布于 2013-01-09 04:39:19

如果你把对twinx()add_subplot()的调用去掉,我想你会得到你想要的结果。如下所示:

代码语言:javascript
复制
fig2 = plt.figure(2)
ax3 = fig2.add_subplot(111)
ax4 = ax3.twinx()
for kk in range(len(data)):
    ax4.plot(x.T, data[kk], 'b.-')

plt.show()

在循环结束时,您将调用twinx()两次,因此您自然会得到两个成对的轴。由于它们具有不同的规模,因此数字以一种尴尬的方式重叠。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13898409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档