【问题标题】:Scatter plot of pair coordinates, annotated with pandas DataFrame index name for labels对坐标的散点图,用 pandas DataFrame 索引名称注释标签
【发布时间】:2021-05-08 03:17:01
【问题描述】:

对于一个两列的 pandas DataFrame,它的行包含一对作为 xy 坐标彼此属于的两个值,如何生成 2D 图,使得每对坐标都有一个带注释的文本标签,等于index 该行的名称?

例如,坐标(0.9838010.0155373)应在图中显示为单个点,并用AXP 进行注释。与其余行类似,每个行都有唯一的名称

DataFrame 由两个一维 numpy 数组 ab 构成,而标签是两个长度相等的列表:

#columns labeled on next line since the transpose of index arg is columns
df = pd.DataFrame(np.vstack((a,b)),index=['pe','jsc']).T 
df.index = labels #row labels

【问题讨论】:

    标签: python pandas dataframe annotations scatter-plot


    【解决方案1】:

    试试这样的:

    # sample data
    df = pd.DataFrame(np.random.rand(4,2), columns=['pe','jsc'], index=list('abcd'))
    
    plt.scatter(df['pe'], df['jsc'])
    for idx, row in df.iterrows(): 
        plt.text(row['pe'], row['jsc'], idx)
    

    输出:

    【讨论】:

    • 这行得通。如何控制点和标签之间的距离,使它们不重叠?
    • @develarist 您可以将偏移量添加到plt.text:plt.text(row['pe']+0.03, row['jsc']+0.03, idx)。使用偏移量。
    • 我不认为df.iterrows 将索引与数据点的相应顺序保持为它们在 DataFrame 中的显示方式。绘图标签和数据点与原始数据不对应
    • @develarist 是的。这就是iterrows 的全部意义所在。如果您认为顺序不正确,您应该检查您创建的数据框。
    • 只是for col_name in df: col=df[col_name]
    猜你喜欢
    • 1970-01-01
    • 2018-02-11
    • 1970-01-01
    • 2016-08-20
    • 1970-01-01
    • 2016-10-24
    • 1970-01-01
    • 2013-08-04
    相关资源
    最近更新 更多