Panda DataFrame 传入参数进行绘图

Panda DataFrame Passing in Parameters For Plotting

对于任何 pandas DataFrame,说

df

我可以使用

绘制相关信息
df.plot()

但是在 pandas 绘图站点上:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.plot.html,我正在寻找一种减小图例大小的方法;它太大了。我怎样才能做到这一点?

我是否使用 kwds 参数?

上面的绘图站点指出我可以通过以下方式使用 kwds:

"kwds : 关键词 传递给 matplotlib 绘图方法的选项

我该如何使用它?我用字典吗?我怎样才能使这个选项引用图例,即像

这样的东西
plt.legend(['foo'],prop={'size':13})

用于图例的字体大小,使其变小。

DataFrame.plot() returns Axes对象,然后可以调用ax.legend()修改设置:

ax = df.plot()
ax.legend(prop={'size':10})

您无需执行任何特殊操作即可传递 **kwds(请参阅此 SO question 以更好地理解 ** 表示法)。

所有不是 DataFrame.plot method will be passed to the pyplot.plt 方法的位置参数的参数自动。

注意:kwds代表关键字参数,所以你必须使用arg_name = arg_value

您可能已经在不知不觉中使用了它,例如在 df.plot(alpha=0.5) 中:alpha 不是 DataFrame.plot 的位置参数,因此它被传递给 pyplot.plt.

试试就可以看到aalpha:错误栈指向matplotlib,不是pandas。

--

注意:label 参数不能按原样工作。

pandas code 中,您可以看到图例标签是根据列名自动生成的,除非明确传递了 y 参数。这是有道理的,因为 y 只能是一列,其中 DataFrame.plot 允许您一次绘制所有列。但是 label 不接受值列表,因此无法知道要更新哪个标签。

这意味着你有三个选择。将单个列名称作为 y 传递:在这种情况下 label 将按预期工作。或之后更新图例(请参阅 legend guide 以供参考)。或将单列 DataFrame 用作 Series。

--

编辑原始问题**kwds 参数传递给 pyplot.plt,没有直接 link 到图例。因此无法使用 DataFrame.plot.

更新图例属性

你可以这样做:

df.plot().legend(prop={'size':10})

您还可以传递更多参数(这会将图例放置在绘图之外):

df.plot().\
    legend(loc='center left', bbox_to_anchor=(1.0, 0.5))