正负值不同颜色的散点图

问题描述 投票:1回答:1

我的问题是这样的

这是我的两个DataFrames的例子(我的实际情况是有30列

import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline

df = pd.DataFrame({"Marc":[6,0,8,-30,-15,0,-3],
                   "Elisa":[0,1,0,-1,0,-2,-4],
                   "John":[10,12,24,-20,7,-10,-30]})

df1 = pd.DataFrame({"Marc":[8,2,15,-12,-8,0,-35],
                   "Elisa":[4,5,7,0,0,1,-2],
                   "John":[20,32,44,-30,15,-10,-50]})

我想创建一个有两种不同颜色的散点图:如果df1的分数是负数,就用一种颜色,如果是正数,就用一种颜色,但我真的不知道怎么做。

我已经用matplotlib做过了

plt.scatter(df,df1);

我还检查了这个链接 链接 但问题是,我有两个Pandas Dataframe,而不是这个链接上的numpy数组。因此,我不能使用 c= np.sign(df.y) 方法。我想保留Pandas DataFrame,因为我有很多列,但我真的很卡。

如果有谁有解决办法,欢迎大家指教。

python pandas matplotlib scatter-plot
1个回答
3
投票

你可以传入颜色数组,但似乎只对一维数组有效。

# colors as stated
colors = np.where(df1<0, 'C0', 'C1')

# stack and ravel to turn into 1D
plt.scatter(df.stack(),df1.stack(), c=colors.ravel())

输出:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.