从包含类别的 csv 文件创建散点图

create a scatter plot from a csv file with categories

我刚刚进入 Python,我正在尝试生成包含多个类别的散点图。我正在使用 Iris 数据集作为基础,这是我目前所拥有的:

import matplotlib.pyplot as plt
import numpy as np

fig,ax = plt.subplots(1)

iris_data = np.genfromtxt(
    "iris.csv", names=True,
    dtype="float", delimiter=",")

x=iris_data["sepal_length"]
y=iris_data["sepal_width"]
g=iris_data["class"]
plt.scatter(x,y)

plt.show()

我不知道如何分离出 类 并将每个都绘制在同一张图上。

我来自 Matlab,我所需要的只是 "gscatter(x,y,g) creates a scatter plot of x and y, grouped by g" 完成工作,但我发现 python 需要更多才能完成 group by g 部分。

提前感谢您的帮助。

使用seaborn:

import seaborn as sns, matplotlib.pyplot as plt

iris = sns.load_dataset('iris')
sns.scatterplot(x='sepal_length',y='sepal_width',data=iris,hue='species')

plt.show()

结果:

只要您的数据组织在 pandas DataFrame 中,您就可以在 matplotlib 中执行与以下示例相同的操作:

for k,g in iris.groupby('species'):
    plt.scatter(g['sepal_length'],g['sepal_width'],label=k)