如何在Matplotlib中实现原点居中带箭头的笛卡尔坐标系?
在Matplotlib中创建笛卡尔坐标系的方法
要实现交于原点(0,0)、带箭头的笛卡尔坐标系,你可以对Matplotlib的坐标轴进行自定义调整,以下是修改后的完整代码:
import numpy as np import matplotlib.pyplot as plt t = np.arange(-6, 6, 0.2) x = (4*(t*t-1)/(t*t+1)) y = (4*t*(t*t-1)/(t*t+1)) plt.figure(figsize=(9, 5)) plt.plot(x, y, label='摆线') plt.plot(0, 0, 'go', label='O(0, 0)') # 获取当前坐标轴实例 ax = plt.gca() # 隐藏默认的顶部、右侧边框 ax.spines['top'].set_visible(False) ax.spines['right'].set_visible(False) # 将左侧y轴移到x=0位置,底部x轴移到y=0位置 ax.spines['left'].set_position(('data', 0)) ax.spines['bottom'].set_position(('data', 0)) # 给坐标轴末端添加箭头 ax.plot(1, 0, ">k", transform=ax.get_yaxis_transform(), clip_on=False) ax.plot(0, 1, "^k", transform=ax.get_xaxis_transform(), clip_on=False) # 调整坐标轴标签位置 ax.set_xlabel('x', loc='right') ax.set_ylabel('y', loc='top') plt.title('参数方程图像') plt.grid() plt.legend(loc=0) plt.show()
关键调整说明:
- 通过
plt.gca()获取当前坐标轴对象,实现精细控制 - 隐藏顶部和右侧边框,只保留需要的中心坐标轴
- 使用
set_position(('data', 0))将坐标轴定位到原点交汇 - 绘制箭头时利用
transform参数,确保箭头始终显示在坐标轴末端,不受绘图范围影响 - 调整标签位置让x轴标签在右侧、y轴标签在顶部,贴合笛卡尔坐标系的视觉习惯
内容的提问来源于stack exchange,提问作者Aleks
相关产品推荐
相关产品推荐

