python - 从 Pandas 数据框创建多个图

标签 python pandas matplotlib

我有以下 Pandas 数据框:

    data ={'Studentid'['SSmith','SSmith','SSmith','SSmith','PPeters','PPeters','PPeters'],
    'LastName':['Smith','Smith','Smith','Smith','Peters','Peters','Peters'],
    'FirstName':['S','S','S','S','P','P','P'],
    'year':[2012,2013,2014,2014,2015,2015,2015],
    'month':[11,7,1,2,10,11,12],
    'BookLevel':[1.4,1.5,2.5,3.8,3.0,3.8,3.7],
    'BookProgress':[0.0, 0.1, 1.1, 2.4, 0.0, 0.8, 0.7],
    'DateProgress':[0.0, .68, 1.21, 1.29, .04, .12, .18],
    'PlusMinus':[0.0, -.58, -.11, 1.11, -.04, .68, .52]}

我正在尝试为史密斯和彼得斯创建单独的情节。我尝试了很多替代方案,最接近的是以下代码:

x=[(df['DateProgress'])]
y=[(df['BookProgress'])]

for i, group in df.groupby("Studentid"):
    plt.figure()

    plt.scatter(x,y)

    plt.plot(range(4))
    plt.xlim(-.5, 3.5)
    plt.ylim(-.5, 3.5)
    plt.xlabel('DateProgress')
    plt.ylabel('BookProgress')

    plt.gca().set_aspect('equal', adjustable='box')


    plt.show()

结果是两个独立的图,但它们是相同的,并且都包含 Smith 和 Peters 的所有数据点。我很惊讶我能够得到两个地 block ——尽管它们不是我想要的地 block 。我不知道如何获得我正在寻找的东西...这是史密斯的一个图,有 4 个数据点,而彼得斯的另一个图有 3 个数据点。感谢任何帮助

最佳答案

未经测试。您已经非常接近了,您只需为每个组重新定义 xy 即可。

--piRSquared(现已测试)...它有效。

for i, group in df.groupby("Studentid"):
    plt.figure()
    x=group['DateProgress']
    y=group['BookProgress']
    plt.scatter(x,y)

    plt.plot(range(4))
    plt.xlim(-.5, 3.5)
    plt.ylim(-.5, 3.5)
    plt.xlabel('DateProgress')
    plt.ylabel('BookProgress')

    plt.gca().set_aspect('equal', adjustable='box')

    plt.title(i) #Label each plot

    plt.show()

enter image description here

enter image description here

我只是想提一下,如果您同意在同一轴上以不同颜色绘制两个图,则可以使用更优雅的方法:http://pandas.pydata.org/pandas-docs/stable/visualization.html

关于python - 从 Pandas 数据框创建多个图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37752265/

相关文章:

python - Python中验证上传的文件是否为word文档

python - 从 panda 数据框中读取 5 行并将其插入到另一个 panda 数据框中每行一个单元格中

python - Docker.py 如何使用 stdin_open=True 停止容器?

python - Featuretools 分类处理

c# - C#.NET 中的 Pandas Dataframe 或类似工具

python - 仅在 matplotlib 中水平线在一侧到无穷远

python - axes.prop_cycle 的 Matplotlib 1.5 用法

python - 传递无限重复的数据集时,必须指定 `steps_per_epoch` 参数

Python matplotlib 多条

python - 如何重复 pandas 数据框列 x 次?