用熊猫和matplotlib绘图

时间:2017-07-08 08:44:11

标签: python pandas matplotlib dataframe scatter-plot

我正在尝试在Python中创建散点图。我有一个带有指定类别的数据框'df',x和y是列号:

groups = df.groupby(category)
fig, ax = plt.subplots()
for name, group in groups:
    ax.plot(x=group.iloc[:,x], y=group.iloc[:,y], marker='o', linestyle='',label=name)
fig = ax.get_figure()
fig.savefig(path)

出于某种原因,我得到一个空的散点图 - 我做错了什么?

1 个答案:

答案 0 :(得分:1)

ax.plot没有xy个参数。

签名为Axes.plot(*args, **kwargs),意味着xy只是位置参数。如果您指定x=y=,则会将其视为关键字参数并被忽略。

请从代码

中删除x=y=
ax.plot(group.iloc[:,x], group.iloc[:,y], marker='o', linestyle='',label=name)

完整示例:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({"x":np.random.rand(40), 
                   "y":np.random.rand(40),
                   "category": np.random.choice(list("ABCD"), size=40)})
category = "category"
x=1; y=2
groups = df.groupby(category)
fig, ax = plt.subplots()
for name, group in groups:
    ax.plot(group.iloc[:,x], group.iloc[:,y], marker='o', linestyle='',label=name)
fig = ax.get_figure()
#fig.savefig(path)
plt.show()