如何用Matplotlib实现X轴垂直向上、Y轴水平向左的绘图?
用Matplotlib实现X轴垂直向上、Y轴水平向左的图表
要实现你需要的坐标轴布局(X轴垂直向上,Y轴水平向左,常规坐标(-5, 3)对应目标位置),可以通过调整Matplotlib坐标轴的方向、位置和刻度来完成,以下是具体实现步骤和代码:
核心思路
- 将原Y轴作为新的X轴(垂直向上),并将其刻度和标签移到图表右侧;
- 将原X轴反转(正方向改为向左),作为新的Y轴,并将其刻度和标签移到图表顶部;
- 常规坐标
(x, y) = (-5, 3)在新布局中,会对应X轴(垂直向上)的3位置,Y轴(水平向左)的5位置(因X轴反转,原x=-5对应新Y轴的正方向5)。
完整代码
import matplotlib.pyplot as plt # 创建绘图对象 fig, ax = plt.subplots(figsize=(6, 6)) # 1. 反转X轴,让Y轴正方向向左 ax.invert_xaxis() # 2. 调整原Y轴(新X轴)的位置:移到右侧,刻度和标签垂直向上 ax.yaxis.set_label_position("right") ax.yaxis.tick_right() # 3. 调整原X轴(新Y轴)的位置:移到顶部,刻度和标签水平显示 ax.xaxis.set_label_position("top") ax.xaxis.tick_top() # 绘制常规坐标(-5, 3)的点,验证位置 ax.scatter(-5, 3, color='#ff4500', s=120, zorder=5) # 设置坐标轴标签 ax.set_xlabel('Y轴(水平向左)', fontsize=12) ax.set_ylabel('X轴(垂直向上)', fontsize=12) # 设置坐标轴范围,确保点在可视区域内 ax.set_xlim(-10, 10) ax.set_ylim(-10, 10) # 添加网格辅助查看 ax.grid(True, linestyle='--', alpha=0.7) plt.show()
代码解释
ax.invert_xaxis():反转原X轴的方向,使得X轴正方向从向右变为向左,满足Y轴水平向左的需求;ax.yaxis.set_label_position("right")+ax.yaxis.tick_right():把原本垂直向上的Y轴(作为新的X轴)移到图表右侧,刻度和标签都在右侧,符合X轴垂直向上的布局;ax.xaxis.set_label_position("top")+ax.xaxis.tick_top():把反转后的X轴(作为新的Y轴)移到图表顶部,水平显示刻度和标签;scatter(-5, 3):直接绘制常规坐标的点,在调整后的布局中,该点会出现在X轴(垂直向上)3的位置,Y轴(水平向左)5的位置,完全匹配你的需求。
内容的提问来源于stack exchange,提问作者KansaiRobot
相关产品推荐
相关产品推荐

