在matplotlib里,虽然有数据的坐标轴设置好了,这个只是为了画数据显示使用的,如果用它来作标示,又有点不足。比如绘图的区域是X轴和Y轴从-10到100,那么原点的位置,就不在(0,0)位置了。这时候,如果图里内容比较复杂,那么看起来就不容易找到原点。为了解决这个问题,需要在坐标点(0,0)的地方显示一个指示用的坐标轴,这样一目了然,就明白图里的数量关系与位置情况。
因此需要添加一个辅助坐标系,那么需要怎么来做呢?由于matplotlib里没有现成的函数,一次性地实现这个功能,需要使用它多个函数来组合实现这个功能。首先找到画箭头的函数plt.arrow,就可以画出X轴和Y轴,再找到显示文本标签的函数plt.text,就可以在箭头边上作出标记,此时完善地解决了这个问题,下图就是这样实现的:
当然,可以根据不同的数据,不同的坐标轴的方向来画箭头,比如可以从上到下,也可以从右到左,具体情况具体分析,灵活应用。整个例子的源码如下:
import matplotlib.pyplot as plt
import numpy as np
x1, x2 = -10, 100
y1, y2 = -10, 100
fig = plt.figure('deepinout.com')
plt.axes().set_aspect('equal')
plt.axis([x1, x2, y1, y2]) #
plt.xlabel('time')
plt.ylabel('S')
plt.title('title')
dx = 1
dy = 1
for x in np.arange(x1, x2, dx):
for y in np.arange(y1, y2, dy):
plt.scatter(x, y, s = 1, color = 'lightgray')
#画一个箭头坐标系指示
plt.arrow(0, 0, 20, 0, head_length = 4, head_width = 3, color = 'k')
plt.arrow(0, 0, 0, 20, head_length = 4, head_width = 3, color = 'k')
plt.text(25, 0, 'x')
plt.text(0, 25, 'y')
plt.show()