如何用twinx()将Matplotlib次级Y轴设为主轴的1/10?
解答
ax2 = ax.twinx()/10这种写法完全不可行——ax.twinx()返回的是Matplotlib的Axes对象,对Axes执行除法操作会直接触发类型错误,根本达不到设置轴范围的目的。
要实现次级Y轴范围为主轴的1/10,你可以按以下方式修改代码:
- 先完成两条曲线的绘制,让Matplotlib自动计算或确认主轴的Y轴范围
- 获取主轴的范围值,将其除以10后赋值给次级轴
修改后的完整代码示例:
import matplotlib.pyplot as plt import seaborn as sns # 初始化画布和主轴 fig, ax = plt.subplots() # 创建次级Y轴 ax2 = ax.twinx() # 绘制两条折线 sns.lineplot(data=df["A"], ax=ax) sns.lineplot(data=df["B"], ax=ax2) # 获取主轴Y轴的范围 main_ylim = ax.get_ylim() # 设置次级轴范围为主轴的1/10 ax2.set_ylim([val / 10 for val in main_ylim]) plt.show()
比如主轴自动计算出的范围是0-100,次级轴就会被设置为0-10,完全符合你要的1/10比例。如果是手动设置了主轴范围(比如ax.set_ylim(0, 100)),同样可以用这个方法同步次级轴的比例范围。
内容的提问来源于stack exchange,提问作者Economist_Ayahuasca
相关产品推荐
相关产品推荐

