Matplotlib散点图例,使用分类变量

2024-09-29 21:36:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我用matplotlib制作了一个简单的散点图,显示了来自2个数值变量(varA和varB)的数据,这些数据的颜色是我用第三个分类字符串变量(col)定义的,包含10个唯一的颜色(对应于另一个具有10个唯一名称的字符串变量),所有这些都在相同的Pandas DataFrame中,有100多行。 有没有一种简单的方法可以为这个散点图创建一个图例,显示独特的彩色点及其相应的类别名称?或者我应该以某种方式将数据分组并在一个子图中绘制每个类别?到目前为止,我得到的是:

import matplotlib.pyplot as plt
from matplotlib import colors as mcolors

varA = df['A']
varB = df['B'] 
col = df['Color']

plt.scatter(varA,varB, c=col, alpha=0.8)
plt.legend()

plt.show()

Tags: 数据字符串import名称dfmatplotlib颜色as
2条回答

考虑到,Color是包含所有颜色和标签的列,您可以简单地执行以下操作。在

colors = list(df['Color'].unique())
for i in range(0 , len(colors)):
    data = df.loc[df['Color'] == colors[i]]
    plt.scatter('A', 'B', data=data, color='Color', label=colors[i])
plt.legend()
plt.show()

一种简单的方法是按颜色对数据进行分组,然后在一个图上绘制所有数据。熊猫有一个内置的groupby功能。例如:

import matplotlib.pyplot as plt
from matplotlib import colors as mcolors

for color, group in df.groupby(['Color']):
    plt.scatter(group['A'], group['B'], c=color, alpha=0.8, label=color)

plt.legend()
plt.show()

请注意,我们为每一组数据调用一次plt.scatter。然后我们只需要调用plt.legendplt.show一旦所有数据都在我们的绘图中。在

相关问题 更多 >

    热门问题