【问题标题】:How to create scatter plot with 3 columns如何创建具有 3 列的散点图
【发布时间】:2021-04-13 08:24:40
【问题描述】:

我有一个 df,它看起来:

df_results = pd.DataFrame(data={})
df_results['names'] = ['James', 'Lucas', 'Henry', 'James', 'Lucas', 'Henry']
df_results['try_name'] = ["try_1", "try_1", "try_1", "try_2", "try_2", "try_2"]
df_results['score'] = [0.7, 0.9, 0.3, 0.91, 0.1, 0.2]

   names try_name  score
0  James    try_1   0.70
1  Lucas    try_1   0.90
2  Henry    try_1   0.30
3  James    try_2   0.91
4  Lucas    try_2   0.10

我想创建一个图(散点图),其中:

  • x 轴为列try_name
  • y 轴为列score
  • 值(图中的点)根据列names(3 种不同颜色)

我怎样才能创建这个情节?

【问题讨论】:

    标签: python python-3.x pandas matplotlib


    【解决方案1】:

    纯matplotlib解决方案:

    fig = plt.figure(figsize=(7,4))
    ax = fig.add_subplot(111)
    for name in df_results.names.unique():
        ax.scatter(df_results[df_results.names == name].try_name, 
                   df_results[df_results.names == name].score, label=name)
    ax.legend()
    

    使用熊猫情节:

    fig = plt.figure(figsize=(7,4))
    ax = fig.add_subplot(111)
    for i,name in enumerate(df_results.names.unique()):
        df_results[df_results.names == name].plot.scatter('try_name', 'score', 
                                                          ax=ax, color='C{}'.format(i), 
                                                          label=name)
    ax.legend()
    

    【讨论】:

    • 谢谢。是否可以使用 pandas plot 来做到这一点?
    • 添加了一个使用熊猫情节的版本,它回答了你的问题吗?
    【解决方案2】:

    您可以使用 seaborn 的 swarmplot()stripplot()scatterplot()

    例如swarmplot():

    import seaborn as sns
    sns.swarmplot(data=df_results, x='try_name', y='score', hue='names')
    

    【讨论】:

    • 谢谢。是否可以使用 pandas plot 来做到这一点?
    猜你喜欢
    • 2016-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多