我有一个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轴上,并基于{{ 1}}列。所有那些True必须具有一种颜色,所有那些False必须具有其他不同的颜色。
答案 0 :(得分: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)
答案 1 :(得分: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()