pandas.DataFrame.plot.barh#
- DataFrame.plot.barh(x=None, y=None, color=None, **kwargs)[源代码]#
制作一个水平条形图。
水平条形图是一种用矩形条表示定量数据的图表,矩形条的长度与它们所代表的值成比例。条形图显示了离散类别之间的比较。图表的一个轴显示被比较的具体类别,另一个轴表示测量的值。
- 参数:
- x标签或位置,可选
允许绘制一列与另一列的对比图。如果未指定,则使用DataFrame的索引。
- y标签或位置,可选
允许绘制一列与另一列的对比图。如果未指定,则使用所有数值列。
- 颜色str, 类数组, 或 dict, 可选
每个 DataFrame 列的颜色。可能的值有:
- 一个通过名称、RGB或RGBA代码引用的单一颜色字符串,
例如 ‘red’ 或 ‘#a98d19’。
- 一系列通过名称、RGB或RGBA引用的颜色字符串
代码,将用于每个列递归地。例如 [‘green’,’yellow’] 每个列的条形图将交替填充绿色或黄色。如果只有一个列要绘制,那么只会使用颜色列表中的第一个颜色。
- 一个形式为 {列名} 的字典颜色`,以便每列将是
相应地着色。例如,如果你的列名为 a 和 b,那么传递 {‘a’: ‘green’, ‘b’: ‘red’} 将会把列 a 的条形图着色为绿色,列 b 的条形图着色为红色。
- **kwargs
其他关键字参数在
DataFrame.plot()
中记录。
- 返回:
- matplotlib.axes.Axes 或它们的一个 np.ndarray
当
subplots=True
时,返回一个 ndarray,每列包含一个matplotlib.axes.Axes
。
参见
DataFrame.plot.bar
垂直条形图。
DataFrame.plot
使用 matplotlib 绘制 DataFrame 的图表。
matplotlib.axes.Axes.bar
使用 matplotlib 绘制垂直条形图。
例子
基本示例
>>> df = pd.DataFrame({'lab': ['A', 'B', 'C'], 'val': [10, 30, 20]}) >>> ax = df.plot.barh(x='lab', y='val')
绘制整个DataFrame到水平条形图
>>> speed = [0.1, 17.5, 40, 48, 52, 69, 88] >>> lifespan = [2, 8, 70, 1.5, 25, 12, 28] >>> index = ['snail', 'pig', 'elephant', ... 'rabbit', 'giraffe', 'coyote', 'horse'] >>> df = pd.DataFrame({'speed': speed, ... 'lifespan': lifespan}, index=index) >>> ax = df.plot.barh()
为 DataFrame 绘制堆积水平条形图
>>> ax = df.plot.barh(stacked=True)
我们可以为每一列指定颜色
>>> ax = df.plot.barh(color={"speed": "red", "lifespan": "green"})
绘制 DataFrame 的一列到水平条形图
>>> speed = [0.1, 17.5, 40, 48, 52, 69, 88] >>> lifespan = [2, 8, 70, 1.5, 25, 12, 28] >>> index = ['snail', 'pig', 'elephant', ... 'rabbit', 'giraffe', 'coyote', 'horse'] >>> df = pd.DataFrame({'speed': speed, ... 'lifespan': lifespan}, index=index) >>> ax = df.plot.barh(y='speed')
绘制 DataFrame 与所需列的对比
>>> speed = [0.1, 17.5, 40, 48, 52, 69, 88] >>> lifespan = [2, 8, 70, 1.5, 25, 12, 28] >>> index = ['snail', 'pig', 'elephant', ... 'rabbit', 'giraffe', 'coyote', 'horse'] >>> df = pd.DataFrame({'speed': speed, ... 'lifespan': lifespan}, index=index) >>> ax = df.plot.barh(x='lifespan')