【问题标题】:Plotting multiple scatter plots of multiple years in Python在 Python 中绘制多年的多个散点图
【发布时间】:2018-11-06 22:01:56
【问题描述】:

我有一个如下所示的数据框:

Date            Faculty         Target        Avg
2012-01-01       Arts             80           60
2012-01-01       Science          70           60
2012-02-01       Arts             91           89
2012-02-01       Gym              80           89
.
.
2012-07-01       Arts             83           67
2012-07-01       Science          72           67
2012-08-01       Arts             81           83
2012-08-01       Science          70           83

我想将所有 Faculty 绘制在一个散点图上,其中每个 Target 值(Y 轴)和 Avg 值(X 轴)。

我正在尝试使用(伪代码)散点图,例如:

ax1 = data.plot(kind='scatter', x='Avg', y='Target(Arts)', color='r', label='Arts')    
ax2 = data.plot(kind='scatter', x='Avg', y='Target(Science)', color='g', ax=ax1, label='Science') 
ax3 = data.plot(kind='scatter', x='Avg', y='Target(Gym)', color='b', ax=ax1, label='Gym')

我希望每个目标值(用不同颜色标记)的所有学院(总共有 28 个)在同一个图上,但是有太多无法使用 loc 手动输入(或者至少我会想避免这种情况)。我不能使用iloc 按索引计数,因为每个日期的每个教员计数都不同。

有没有简单的方法来做到这一点?

【问题讨论】:

    标签: python python-3.x pandas dataframe matplotlib


    【解决方案1】:

    您可以groupby Faculty,并遍历组,绘制每个组:

    g = df.groupby('Faculty')
    
    for faculty, data in g:
        plt.scatter(data['Avg'], data['Target'], label=faculty)
    
    plt.xlabel('Avg')
    plt.ylabel('Target')
    plt.legend()
    plt.show()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-16
      • 1970-01-01
      • 2021-02-20
      相关资源
      最近更新 更多