Pandas 用一种颜色绘制正值,另一种颜色绘制负值

guy*_*guy 5 python plot matplotlib pandas

我有一个 Pandas 数据框,我在其中绘制了 12 列中的两列,一列作为 x 轴,另一列作为 y 轴。x 轴只是一个时间序列,y 轴是值是介于 -5000 和 5000 之间的随机整数。

有什么方法可以仅使用这 2 列来制作散点图,其中 y 的正值是某种颜色,负值是另一种颜色?

我尝试了很多变化,但什么也做不了。我尝试对负数/正数使用不同的颜色图、颜色网格、使用 seaborn 颜色图和布尔值掩码。我没办法。

Imp*_*est 5

使用颜色图为散点的点着色的想法当然是合理的。如果您使用的是plt.scatter绘图,则可以提供颜色图在c参数中选择颜色所依据的值。

在这里你只需要两个值,所以c= np.sign(df.y)是一个合适的选择。

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

df = pd.DataFrame({'x': np.arange(25), 'y': np.random.normal(0,2500,25)})
fig, ax = plt.subplots()

ax.scatter(df.x, df.y, c=np.sign(df.y), cmap="bwr")

plt.show()
Run Code Online (Sandbox Code Playgroud)

根据正负值着色的散点图