【问题标题】:Panda DataFrame Passing in Parameters For PlottingPanda DataFrame 传递参数进行绘图
【发布时间】:2015-04-08 01:59:09
【问题描述】:

对于任何 pandas DataFrame,比如说

df

我可以使用绘制相关信息

df.plot()

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

我是否使用 kwds 参数?

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

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

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

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

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

【问题讨论】:

    标签: python pandas parameter-passing


    【解决方案1】:

    DataFrame.plot()返回Axes对象,你可以调用ax.legend()修改设置:

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

    【讨论】:

    • 我和 alvarezcl 有同样的问题,但不幸的是你的回答并没有真正回答它。如何使用 kwds 参数将绘图设置(例如点的 alpha 级别)从 pandas.DataFrame.plot 传递到 matplotlib.pyplot.plot? pandas 文档表明您可以使用 kwds 关键字执行此操作,但我了解如何操作。
    • 同意,此回复未回答问题,尽管已被接受。我仍在寻找在熊猫图中传递关键字的语法,但没有一个例子可以说明如何做到这一点。
    【解决方案2】:

    您不必做任何特别的事情来传递**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 用作系列。

    --

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

    【讨论】:

      【解决方案3】:

      你可以这样做:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-08-11
        • 2017-09-08
        • 1970-01-01
        • 2022-01-19
        • 2016-08-13
        • 2012-08-05
        相关资源
        最近更新 更多