python - 在散点图中创建 for 循环的问题
问题描述
下面是我的散点图代码。我遇到的问题是图例显示:
一个蓝点旁边有一个 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()