Skip to main content
 首页 » 编程设计

python之在散点图中创建 for 循环的问题

2025年05月04日19lovecherry

下面是我的散点图代码。我遇到的问题是图例显示:

旁边有一个 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() 

请您参考如下方法:

你的方法有两个错误:

  1. 每次运行 plt.legend('Microcar'+ stri(i)) 行时,它都会覆盖图例。
  2. 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()