首页 文章

大熊猫情节与正值一种颜色和负值另一种

提问于
浏览
3

我有一个pandas数据框,我在其中绘制了12列中的两列,一列为x轴,另一列为y轴 . x轴只是一个时间序列,y轴是粗略的-5000到5000之间的随机整数 .

有没有办法只使用这两列来制作散点图,其中y的正值是某种颜色而负颜色是另一种颜色?

我尝试了很多变化,但无法得到任何东西 . 我尝试使用seaborn colormaps和booleans mask为delta / positive数字分散颜色贴图,colormeshs . 我没办法 .

3 回答

  • 2

    使用色彩图对分散点进行着色的想法当然是合理的 . 如果您正在使用 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()
    

    scatter plot colored according to postive and negative vlaues

  • 0

    使用布尔掩码和where关键字创建2个单独的数据帧 . 条件是if> 0或不是 . 然后逐个绘制两个数据帧,一个在另一个顶部,使用不同的颜色参数 .

  • 0

    拆分数据框并分别绘制它们:

    import matplotlib.pylab as plt
    import numpy as np
    import pandas as pd
    
    df = pd.DataFrame({'x': np.arange(20), 'y': np.random.randn(20)})
    # split dataframes
    df_plus = df[df.y >= 0]
    df_minus = df[df.y < 0]
    print df_plus
    print df_minus
    
    fig = plt.figure()
    ax = fig.add_subplot(1, 1, 1)
    # plot scatter
    ax.scatter(df_plus.x, df_plus.y, color='r')
    ax.scatter(df_minus.x, df_minus.y, color='b')
    ax.autoscale()
    plt.show()
    

    enter image description here

    如果您希望绘制负数据帧为正写 df.minus.y = -df_minus.y .

相关问题