【问题标题】:How to can make a scatter plot of xy column but based on the value of 'id' column如何制作 xy 列的散点图,但基于“id”列的值
【发布时间】:2020-09-09 19:26:37
【问题描述】:

我有一个这样的数据框。

 ID        X     Y CLASS  
  A      123   456     0 
  A      789   121     1 
  A      456   333     1
  B      111   123     1   
  B      156   123     1
  C      167   189     1
  C      567   789     1

我想为 'id' 分组相同的值,并根据同一图中的 xy 轴制作不同的散点图。 现在,我正在使用

groups = df.groupby('id')

这会创建单独的组并手动绘制不同的 id,但我想在单个图像中绘制所有散点图并根据类将它们分开。对不起,如果问题太“菜鸟”。感谢您的宝贵时间。

【问题讨论】:

  • 哪一列的结果相同?是吗?

标签: python pandas matplotlib


【解决方案1】:

以下将为您提供同一图像中不同 ID 的不同散点图。我想这就是你想要的:

import matplotlib.pyplot as plt
import seaborn as sns
g=sns.FacetGrid(df, row='ID')
g=g.map(plt.scatter, x='Y', y='Y')
plt.show()

或者,您可以使用以下代码为每个 ID 创建一个具有不同点颜色的散点图:

import matplotlib.pyplot as plt
import seaborn as sns

sns.scatterplot(df['X'], df['Y'], hue = df['ID'])
plt.show()

【讨论】:

  • 谢谢,我正在尝试做第一个,但它似乎不起作用。我得到像link 这样的输出,中心坐标只有一个点。 \imgur 链接/.
  • 你能否检查一下你的列名,如果他们有很多“X”和“Y”(没有空格等)?
【解决方案2】:

要在同一个情节中进行,您可以使用:

import pandas as pd
import matplotlib.pyplot as plt

for name, group in df.groupby('ID'):
    plt.scatter(group.X, group.Y, label=name)
plt.legend()
plt.show()

【讨论】:

  • 对不起,我的措辞可能有误。我想在同一平面上绘制不同的图。因为不同的 id 可能共享坐标。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-16
  • 1970-01-01
  • 2021-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-15
相关资源
最近更新 更多