You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Matplotlib绘制x轴居右且带指定箭头样式的图表

实现自定义坐标轴样式的Matplotlib图表

需求说明

需绘制一张图表,满足以下要求:

  • x轴位于图表右侧,且右侧带有箭头
  • y轴顶部和底部均带有箭头

完整实现代码

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.patches import FancyArrowPatch

# 创建示例数据
x = np.linspace(0, 10, 100)
y = np.sin(x)

# 创建画布和轴对象
fig, ax = plt.subplots(figsize=(8, 6))

# 绘制数据曲线
ax.plot(x, y)

# 调整坐标轴边框显示
ax.spines['top'].set_visible(False)
ax.spines['bottom'].set_visible(False)

# 定位y轴(左侧边框)到x=0的位置,作为垂直主轴
ax.spines['left'].set_position(('data', 0))
# 定位x轴(右侧边框)到y=0的位置,作为右侧水平轴
ax.spines['right'].set_position(('data', 0))

# 添加y轴顶部箭头
y_top_limit = ax.get_ylim()[1]
arrow_y_top = FancyArrowPatch((0, y_top_limit), (0, y_top_limit + 0.2), 
                              arrowstyle='->', color='black', linewidth=1.5)
ax.add_patch(arrow_y_top)

# 添加y轴底部箭头
y_bottom_limit = ax.get_ylim()[0]
arrow_y_bottom = FancyArrowPatch((0, y_bottom_limit), (0, y_bottom_limit - 0.2), 
                                 arrowstyle='->', color='black', linewidth=1.5)
ax.add_patch(arrow_y_bottom)

# 添加x轴右侧箭头
x_right_limit = ax.get_xlim()[1]
arrow_x_right = FancyArrowPatch((x_right_limit, 0), (x_right_limit + 0.5, 0), 
                                arrowstyle='->', color='black', linewidth=1.5)
ax.add_patch(arrow_x_right)

# 设置轴标签位置
ax.set_xlabel('X-axis', x=1.1, labelpad=10)
ax.set_ylabel('Y-axis', y=1, labelpad=10)

# 调整坐标轴范围,预留箭头显示空间
ax.set_ylim(y_bottom_limit - 0.5, y_top_limit + 0.5)
ax.set_xlim(-0.5, x_right_limit + 0.5)

# 显示图表
plt.show()

关键改动说明

  • 调整坐标轴边框位置:将左侧边框设为y轴并移至x=0处,右侧边框设为x轴并移至y=0处,实现x轴在右侧、y轴居中的布局
  • 使用FancyArrowPatch绘制箭头:分别为y轴上下端、x轴右端添加箭头,确保样式符合需求
  • 调整坐标轴范围与标签位置:避免箭头被截断,同时让标签与坐标轴位置匹配

内容的提问来源于stack exchange,提问作者David

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 00:38:17