我有两个相同数据的视图,这需要有另一个y轴,它从第一个自然y轴适当缩放。因此,当我绘制我的{x,y}
数据时,左侧y轴显示y,但右侧y轴也显示1 / y或任何其他功能。我不想绘制{x, f(x)}
或{x, 1/y}
。
现在使问题更复杂的是我使用.plt
交互方式而不是轴方法。
plt.scatter(X, Y, c=colours[count], alpha=1.0, label=chart, lw = 0)
plt.ylabel(y_lbl)
plt.xlabel(x_lbl)
还有另一种方式 - 用plt?或者是生成两个覆盖图并适当更改alpha的情况?
答案 0 :(得分:2)
我必须检查您之前(重复)的问题和所有评论,以了解您真正想要的内容。因此,要获得辅助y轴,您仍然可以使用twinx
。然后,您可以使用set_ylim
确保它具有与第一个相同的限制。要根据某些功能(在您的情况下为1/y
)设置刻度标签,您可以使用自定义FuncFormatter。
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.ticker as mticker
fig, ax1 = plt.subplots(1,1)
ax1.set_xlabel('x')
ax1.set_ylabel('y')
# plot something
x = np.linspace(0.01, 10*np.pi, 1000)
y = np.sin(x)/x
ax1.plot(x, y)
# add a twin axes and set its limits so it matches the first
ax2 = ax1.twinx()
ax2.set_ylabel('1/y')
ax2.set_ylim(ax1.get_ylim())
# apply a function formatter
formatter = mticker.FuncFormatter(lambda x, pos: '{:.3f}'.format(1./x))
ax2.yaxis.set_major_formatter(formatter)
plt.show()
结果: