Python:如何在绘制散点图时区分分类值?

问题描述 投票:0回答:2

我有一个看起来像这样的dataframe

ContextID   EscAct_Curr_A   Outlier?
7289972 0.5622317497295798  True
7289973 0.5622317497295798  True
7289998 0.5793991301212501  False
7289999 0.5793991301212501  False
7290024 0.5665235864470339  False
7290025 0.5665235864470339  False

我想做的是绘制一个scatter plot,其中ContextID在x轴上,而EscAct_Curr_A在y轴上并且基于Outlier?列。所有那些True必须是一种颜色,所有那些False必须是一些其他不同的颜色。

python matplotlib
2个回答
2
投票
import pandas as pd
import matplotlib.pyplot as plt

d = {'ContextID': [7289972, 7289973, 7289998], 'EscAct_Curr_A': [0.5622317497295798, 0.5622317497295798, 0.5793991301212501], 'Outlier': [True, True, False]}

df = pd.DataFrame(d)

plt.scatter(df.ContextID, df.EscAct_Curr_A, c=df.Outlier)

0
投票

我认为理解如何做到这一点的最简单方法是解决问题并绘制每个部分的真/假异常值并将它们组合在一起。下面的示例为您提供控制,并将向您展示如何稍微控制颜色。

框架是从您的示例中复制的。

frame.head()
Out:
   ContextID  EscAct_Curr_A  Outlier?
0    7289972       0.562232      True
1    7289973       0.562232      True
2    7289998       0.579399     False
3    7289999       0.579399     False
4    7290024       0.566524     False

# Create Objects
fig, ax= plt.subplots()

# Set Title
ax.set_title('Context ID vs EscAct_Curr_A, Color by Outliers')

# Scatter where outliers are true, color red
ax.scatter('ContextID', 'EscAct_Curr_A', c='r', data=frame.loc[frame.loc[:,'Outlier?']==True,:], label='Outliers True')

# Scatter where outliers are false, color blue
ax.scatter('ContextID', 'EscAct_Curr_A', c='b', data=frame.loc[frame.loc[:,'Outlier?']==False,:], label='Outliers Fasle')

# Set Labels On Axes
ax.set_xlabel('ContextID')
ax.set_ylabel('EscAct_Curr_A')

# Toggle Legend On
ax.legend()
© www.soinside.com 2019 - 2024. All rights reserved.