target = 20.74
reals = [(1,10.684),(3,13.433),(5,14.727),(9,15.671),(15,16.678),(17,17.617),(19,17.402)]
我们这里要把这两个数据画在一个这线图里,要求如下:
1.用折线图画在一起,target只需要画一条横线就行,reals每个元素有两个值,第一个值是横坐标,第二个是纵坐标;纵轴单位token/s,横轴单位ngb
2.给每个数据点标记上纵坐标值,target也要标记值并且用红色
import matplotlib.pyplot as plt
# 提取横坐标和纵坐标
x_coords = [point[0] for point in reals]
y_coords = [point[1] for point in reals]
# 绘制折线图和目标线
plt.plot(x_coords, y_coords, marker='o', linestyle='-', label='Reals')
plt.axhline(y=target, color='r', linestyle='--', label='Target')
plt.xlabel('ngb')
plt.ylabel('token/s')
plt.legend()
plt.title('Reals vs Target')
# 为每个数据点添加纵坐标值
for x, y in zip(x_coords, y_coords):
plt.text(x, y, str(y), fontsize=12, verticalalignment='bottom', horizontalalignment='center')
# 添加红色的 target 标签
plt.text(x_coords[-1] + 0.5, target, f'Target: {target}', fontsize=12, color='red', verticalalignment='center')
plt.show()