如何在Matplotlib图表的中心坐标轴两端添加箭头
解决方法
你可以直接在原有箭头绘制代码的基础上,补充x轴负方向、y轴负方向的箭头绘制逻辑即可,修改后的完整代码如下:
import matplotlib.pyplot as plt fig, ax = plt.subplots(1) plt.xlim([-100, 100]) plt.ylim([-100, 100]) ax.spines['left'].set_position('center') ax.spines['bottom'].set_position('center') ax.spines['right'].set_visible(False) ax.spines['top'].set_visible(False) ax.axes.get_xaxis().set_visible(False) ax.axes.get_yaxis().set_visible(False) ax.set_aspect('equal') # 调整轴的线宽 for axis in ['top','bottom','left','right']: ax.spines[axis].set_linewidth(3) # 四个方向箭头添加逻辑 ax.plot(1, 0, ">k", transform=ax.get_yaxis_transform(), clip_on=False) # x轴右端右箭头 ax.plot(0, 0, "<k", transform=ax.get_yaxis_transform(), clip_on=False) # x轴左端左箭头 ax.plot(0, 1, "^k", transform=ax.get_xaxis_transform(), clip_on=False) # y轴上端上箭头 ax.plot(0, 0, "vk", transform=ax.get_xaxis_transform(), clip_on=False) # y轴下端下箭头 plt.show()
代码说明
- 坐标轴转换
transform=ax.get_yaxis_transform()代表使用坐标轴相对坐标:x取值0对应x轴最左端、1对应x轴最右端,y取值0对应x轴所在的水平位置,因此可以快速定位到x轴的两端位置 - 坐标轴转换
transform=ax.get_xaxis_transform()同理,y取值0对应y轴最下端、1对应y轴最上端,x取值0对应y轴所在的垂直位置,可快速定位y轴两端 - marker参数中
<代表左箭头、>代表右箭头、^代表上箭头、v代表下箭头,后缀k代表颜色为黑色
内容的提问来源于stack exchange,提问作者JBL
相关产品推荐
相关产品推荐

