下面是我的散点图代码。我遇到的问题是图例显示:
旁边有一个 M 的蓝点,然后在它下面显示一个旁边有 i 的橙色点。那不是我想要的。我想让它显示一个带有 Microcar 0 的蓝点,然后在它下面显示一个橙色点,旁边是 Microcar 1。
肯定有问题:
plt.legend('Microcar'+ stri(i))
我的部分代码,但我不知道是什么?
import matplotlib.pyplot as plt
import numpy as np
horizontal_expected =[28.96, 165.03]
vertical_expected = [196.14,-3.34]
for i in list(range(len(vertical_expected))):
y = vertical_expected[i]
x = horizontal_expected[i]
plt.scatter(x,y)
plt.legend('Microcar' + str(i))
plt.show()
请您参考如下方法:
你的方法有两个错误:
- 每次运行
plt.legend('Microcar'+ stri(i))行时,它都会覆盖图例。 plt.legend方法需要一个labels参数,它是一个可迭代的参数,并依次将labels的每个成员分配给图的组成部分。因为字符串是可迭代的,所以它将字符串的每个字符分配给每个图形组件。
公认的解决方案有效,但更易读的方法是边做边标记。
import matplotlib.pyplot as plt
import numpy as np
horizontal_expected =[28.96, 165.03]
vertical_expected = [196.14,-3.34]
for i, (x, y) in enumerate(zip(horizontal_expected, vertical_expected)):
plt.scatter(x, y, label='Microcar ' + str(i))
plt.legend()
plt.show()
