Python 在散点图中创建for循环的问题
下面是我的散点图代码。我遇到的问题是,图例显示: 一个蓝色的点旁边有一个M,然后在它下面显示一个橙色的点旁边有一个i。那不是我想要的。我想让它显示一个带有Microcar 0的蓝色圆点,然后在它下面显示一个旁边带有Microcar 1的橙色圆点 这一定是出了什么问题:Python 在散点图中创建for循环的问题,python,matplotlib,legend,Python,Matplotlib,Legend,下面是我的散点图代码。我遇到的问题是,图例显示: 一个蓝色的点旁边有一个M,然后在它下面显示一个橙色的点旁边有一个i。那不是我想要的。我想让它显示一个带有Microcar 0的蓝色圆点,然后在它下面显示一个旁边带有Microcar 1的橙色圆点 这一定是出了什么问题: plt.legend('Microcar'+ stri(i)) 我的部分代码,但我不知道是什么 import matplotlib.pyplot as plt import numpy as np horizontal_ex
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'+strii行时,它都会覆盖该图例。 legend方法需要一个labels参数,它是一个iterable,并依次将标签的每个成员分配给图形的组件。因为字符串是一个iterable,所以它将字符串的每个字符分配给每个图形组件。 公认的解决方案是可行的,但一种更具可读性的方法是边做边贴标签
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()
您的方法中有两个错误: 每次运行plt.legend'Microcar'+strii行时,它都会覆盖该图例。 legend方法需要一个labels参数,它是一个iterable,并依次将标签的每个成员分配给图形的组件。因为字符串是一个iterable,所以它将字符串的每个字符分配给每个图形组件。 公认的解决方案是可行的,但一种更具可读性的方法是边做边贴标签
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()
在您的例子中,当您将字符串'Microcar'作为参数传递给plt.legend方法时,发生的情况是第一个字符'M'成为第一个图例,第二个字符'i'成为第二个图例 决议 您应该将图例作为字符串列表传递。就像下面的例子
import matplotlib.pyplot as plt
import numpy as np
horizontal_expected =[28.96, 165.03]
vertical_expected = [196.14,-3.34]
legends=[]
for i in list(range(len(vertical_expected))):
y = vertical_expected[i]
x = horizontal_expected[i]
plt.scatter(x,y)
legends.append(['Microcar' + str(i)])
plt.legend(legends)
plt.show()
这会给你预期的结果
希望这有帮助……在您的情况下,当您将字符串“Microcar”作为参数传递给plt.legend方法时,发生的情况是第一个字符“M”成为第一个图例,第二个字符“i”成为第二个图例 决议 您应该将图例作为字符串列表传递。就像下面的例子
import matplotlib.pyplot as plt
import numpy as np
horizontal_expected =[28.96, 165.03]
vertical_expected = [196.14,-3.34]
legends=[]
for i in list(range(len(vertical_expected))):
y = vertical_expected[i]
x = horizontal_expected[i]
plt.scatter(x,y)
legends.append(['Microcar' + str(i)])
plt.legend(legends)
plt.show()
这会给你预期的结果
希望这有帮助