pandas.core.groupby.DataFrameGroupBy.plot#

property DataFrameGroupBy.plot[源代码]#

绘制 Series 或 DataFrame 的图表。

使用由选项 plotting.backend 指定的后端。默认情况下,使用 matplotlib。

参数:
数据系列或数据框

调用该方法的对象。

属性

x

(标签或位置,默认无)仅在数据是 DataFrame 时使用。

y

(标签,位置或标签、位置列表,默认无)允许绘制一列与另一列的对比图。仅在数据是DataFrame时使用。

种类

(str) 要生成的图表类型: - ‘line’ : 折线图 (默认) - ‘bar’ : 垂直条形图 - ‘barh’ : 水平条形图 - ‘hist’ : 直方图 - ‘box’ : 箱形图 - ‘kde’ : 核密度估计图 - ‘density’ : 同 ‘kde’ - ‘area’ : 面积图 - ‘pie’ : 饼图 - ‘scatter’ : 散点图 (仅限 DataFrame) - ‘hexbin’ : 六边形箱图 (仅限 DataFrame)

ax

(matplotlib 轴对象,默认 None)当前图形的轴。

子图

(布尔值或可迭代序列,默认为False) 是否将列分组到子图中: - False : 不会使用子图 - True : 为每一列创建单独的子图。 - 列标签的可迭代序列:为每组列创建一个子图。例如 [(‘a’, ‘c’), (‘b’, ‘d’)] 将创建2个子图:一个包含列 ‘a’ 和 ‘c’,另一个包含列 ‘b’ 和 ‘d’。未指定的剩余列将在额外的子图中绘制(每列一个)。 .. versionadded:: 1.5.0

sharex

(bool, 如果 ax 为 None 则默认为 True 否则为 False) 如果 subplots=True,共享 x 轴并将某些 x 轴标签设置为不可见;如果 ax 为 None 则默认为 True,否则如果传递了 ax 则为 False;请注意,传递 ax 和 sharex=True 将更改图中所有轴的 x 轴标签。

sharey

(bool, 默认 False) 如果 subplots=True,共享 y 轴并将某些 y 轴标签设置为不可见。

布局

(元组,可选)(行,列)用于子图布局。

figsize

(一个以英寸为单位的 (宽度, 高度) 元组)图形对象的大小。

use_index

(bool, 默认 True) 使用索引作为 x 轴的刻度。

标题

(字符串或列表)用于绘图的标题。如果传递的是字符串,则在图形的顶部打印该字符串。如果传递的是列表并且 subplots 为 True,则在相应子图的上方打印列表中的每一项。

网格

(bool, 默认 None (matlab 风格默认)) 轴网格线。

图例

(bool 或 {‘reverse’}) 在轴子图上放置图例。

风格

(列表或字典)每列的 matplotlib 线条样式。

logx

(bool 或 ‘sym’, 默认 False) 在 x 轴上使用对数缩放或 symlog 缩放。

logy

(bool 或 ‘sym’ 默认 False) 在 y 轴上使用对数缩放或 symlog 缩放。

loglog

(bool 或 ‘sym’, 默认 False) 在 x 和 y 轴上使用对数缩放或 symlog 缩放。

xticks

(序列)用于 xticks 的值。

yticks

(序列)用于 yticks 的值。

xlim

(2元组/列表)设置当前轴的x轴限制。

ylim

(2元组/列表)设置当前轴的y轴限制。

xlabel

(标签, 可选) 用于 x 轴上 xlabel 的名称。默认使用索引名称作为 xlabel,或者对于平面图使用 x 列名称。 .. versionchanged:: 2.0.0 现在适用于直方图。

ylabel

(标签, 可选) 用于y轴ylabel的名称。默认情况下不显示ylabel,或者对于平面图显示y列名。 .. versionchanged:: 2.0.0 现在适用于直方图。

rot

(float, 默认 None) 刻度的旋转(垂直图表为 xticks,水平图表为 yticks)。

字体大小

(float, 默认 None) xticks 和 yticks 的字体大小。

colormap

(str 或 matplotlib 色图对象,默认 None)用于选择颜色的色图。如果是字符串,则从 matplotlib 加载具有该名称的色图。

colorbar

(bool, 可选) 如果为 True,绘制颜色条(仅与 ‘scatter’ 和 ‘hexbin’ 绘图相关)。

位置

(float) 指定条形图布局的相对对齐方式。从 0(左/底端)到 1(右/顶端)。默认值是 0.5(中心)。

(bool, Series 或 DataFrame, 默认 False) 如果为 True,使用 DataFrame 中的数据绘制表格,并且数据将被转置以适应 matplotlib 的默认布局。如果传递了 Series 或 DataFrame,则使用传递的数据绘制表格。

yerr

(DataFrame、Series、类数组、字典和字符串)详见 带误差棒的绘图

xerr

(DataFrame、Series、类数组、字典和字符串)等同于 yerr。

stacked

(bool, 默认在折线和条形图中为False,在面积图中为True) 如果为True,创建堆积图。

secondary_y

(布尔值或序列,默认 False) 如果为列表/元组,则表示要在次要 y 轴上绘制的列。

mark_right

(bool, 默认 True) 当使用 secondary_y 轴时,自动在图例中将列标签标记为“(right)”。

include_bool

(bool, 默认是 False) 如果为 True,布尔值可以被绘制。

后端

(str, 默认 None) 使用的后端,而不是在选项 plotting.backend 中指定的后端。例如,’matplotlib’。或者,要为整个会话指定 plotting.backend,请设置 pd.options.plotting.backend

**kwargs

传递给 matplotlib 绘图方法的选项。

返回:
matplotlib.axes.Axes 或它们的 numpy.ndarray

如果后端不是默认的 matplotlib,返回值将是后端返回的对象。

参见

matplotlib.pyplot.plot

绘制 y 相对于 x 的线图和/或标记图。

DataFrame.hist

制作一个直方图。

DataFrame.boxplot

制作一个箱形图。

DataFrame.plot.scatter

制作一个散点图,使用不同的标记点大小和颜色。

DataFrame.plot.hexbin

绘制两个变量的六边形分箱图。

DataFrame.plot.kde

使用高斯核进行核密度估计图的绘制。

DataFrame.plot.area

制作一个堆积面积图。

DataFrame.plot.bar

制作一个条形图。

DataFrame.plot.barh

制作一个水平条形图。

备注

  • 更多关于此主题的内容,请参阅在线的 matplotlib 文档。

  • 如果 kind = ‘bar’ 或 ‘barh’,你可以通过 position 关键字指定条形图布局的相对对齐方式。从 0(左/底端)到 1(右/顶端)。默认是 0.5(中心)

例子

对于系列:

>>> ser = pd.Series([1, 2, 3, 3])
>>> plot = ser.plot(kind="hist", title="My plot")
../../_images/pandas-core-groupby-DataFrameGroupBy-plot-1.png

对于 DataFrame:

>>> df = pd.DataFrame(
...     {"length": [1.5, 0.5, 1.2, 0.9, 3], "width": [0.7, 0.2, 0.15, 0.2, 1.1]},
...     index=["pig", "rabbit", "duck", "chicken", "horse"],
... )
>>> plot = df.plot(title="DataFrame Plot")
../../_images/pandas-core-groupby-DataFrameGroupBy-plot-2.png

对于 SeriesGroupBy:

>>> lst = [-1, -2, -3, 1, 2, 3]
>>> ser = pd.Series([1, 2, 2, 4, 6, 6], index=lst)
>>> plot = ser.groupby(lambda x: x > 0).plot(title="SeriesGroupBy Plot")
../../_images/pandas-core-groupby-DataFrameGroupBy-plot-3.png

对于 DataFrameGroupBy:

>>> df = pd.DataFrame({"col1": [1, 2, 3, 4], "col2": ["A", "B", "A", "B"]})
>>> plot = df.groupby("col2").plot(kind="bar", title="DataFrameGroupBy Plot")
../../_images/pandas-core-groupby-DataFrameGroupBy-plot-4_00.png
../../_images/pandas-core-groupby-DataFrameGroupBy-plot-4_01.png