【问题标题】:How to get the minimum (or maximum) boundary of a scatter plot in Matplotlib如何在 Matplotlib 中获取散点图的最小(或最大)边界
【发布时间】:2020-01-10 14:01:29
【问题描述】:

假设我有数千个随机 (x, y) 数据点,我将 xs 和 ys 存储在数据框中的两列中。需要注意的是,所有xs 都是整数,但ys 是连续数字。如果我使用 Matplotlib 将它们绘制在散点图中,如下所示。现在我想得到绘图的最小边界,我用红色曲线描绘。我该怎么做?为了清楚起见,我想获得 (x,y) 对的索引,每个 x 的最小 y 值,所以索引的长度应该等于 len(set(x))

【问题讨论】:

    标签: python dataframe matplotlib


    【解决方案1】:

    df.grouby('x').min() 是你想要的吗?

    一个完整的例子:

    import numpy as np
    import matplotlib.pyplot as plt
    import pandas as pd
    
    df = pd.DataFrame({'x': np.random.randint(10, size=1000), 'y': np.random.rand(1000)})
    df.plot.scatter('x', 'y', color='k')
    df.groupby('x').min().plot(ax=plt.gca(), color='red')
    

    要获取原始数据帧的索引,您可以在 groupby 上使用 idxmin,例如

    df.groupby('x').idxmin()
    

    【讨论】:

    • 感谢您的回答。情节很好,但我真正需要的是索引列表。
    • df.grouby('x').min() 将为您提供 x 和 y 最小值的数据框。您需要原始索引吗?
    • 是的。确切地。我想要原始数据帧中那些最小数据点的索引,而不是新数据帧
    • 好的,我已经编辑了答案。我认为idxmin 是你所追求的
    • 我认为应该是df[1].groupby('x').idxmin(),因为我想要y值的最小值,但这一切都很好。感谢你的回答。真的很有帮助。
    【解决方案2】:

    试试:

    import matplotlib.pyplot as plt
    import pandas as pd
    
    df = pd.DataFrame({'A':[1,2,3,1,2,3],'B':[1.3,2.6,3.2,5.6,4.5,3.1]})
    fig, ax = plt.subplots()
    ax.plot(df.A, df.B, '-')
    temp = df.groupby('A')['B'].min().reset_index()
    ax.plot(temp.A, temp.B, 'r-')
    

    【讨论】:

    • 感谢您的回答。情节不错,但我真正需要的是索引列表。
    猜你喜欢
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-23
    • 1970-01-01
    • 2020-09-15
    • 2015-05-09
    相关资源
    最近更新 更多