Panda DataFrame传递参数用于绘图

时间:2015-04-08 01:59:10

标签: python pandas parameter-passing

对于任何pandas DataFrame,请说

df

我可以使用

绘制相关信息
df.plot()

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

我是否使用kwds参数?

上面的绘图网站声明我可以通过以下方式使用kwds:

“kwds:keywords 传递给matplotlib绘图方法的选项“

我该如何使用?我是否使用字典?我该怎么做才能让这个选项引用图例,比如

plt.legend(['foo'],prop={'size':13})

表示图例的字体大小,使其变小。

3 个答案:

答案 0 :(得分:2)

DataFrame.plot()会返回Axes对象,然后您可以调用ax.legend()来修改设置:

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

答案 1 :(得分:0)

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

所有不是DataFrame.plot方法的位置参数的参数都将自动传递给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,该参数没有与图例的直接链接。因此无法使用DataFrame.plot更新图例属性。

答案 2 :(得分:0)

您可以这样做:

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

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

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