Python 数据分析三剑客之 Matplotlib(六):直方图 / 柱状图 / 条形图的绘制

CSDN 课程推荐:《Python 数据分析与挖掘》,讲师刘顺祥,浙江工商大学统计学硕士,数据分析师,曾担任唯品会大数据部担任数据分析师一职,负责支付环节的数据分析业务。曾与联想、亨氏、网鱼网咖等企业合作多个企业级项目。


Matplotlib 系列文章:

  • Python 数据分析三剑客之 Matplotlib(一):初识 Matplotlib 与其 matplotibrc 配置文件
  • Python 数据分析三剑客之 Matplotlib(二):文本描述 / 中文支持 / 画布 / 网格等基本图像属性
  • Python 数据分析三剑客之 Matplotlib(三):图例 / LaTeX / 刻度 / 子图 / 补丁等基本图像属性
  • Python 数据分析三剑客之 Matplotlib(四):线性图的绘制
  • Python 数据分析三剑客之 Matplotlib(五):散点图的绘制
  • Python 数据分析三剑客之 Matplotlib(六):直方图 / 柱状图 / 条形图的绘制
  • Python 数据分析三剑客之 Matplotlib(七):饼状图的绘制
  • Python 数据分析三剑客之 Matplotlib(八):等高线 / 等值线图的绘制
  • Python 数据分析三剑客之 Matplotlib(九):极区图 / 极坐标图 / 雷达图的绘制
  • Python 数据分析三剑客之 Matplotlib(十):3D 图的绘制
  • Python 数据分析三剑客之 Matplotlib(十一):最热门最常用的 50 个图表【译文】

另有 NumPy、Pandas 系列文章已更新完毕,欢迎关注:

  • NumPy 系列文章:https://itrhx.blog.csdn.net/category_9780393.html
  • Pandas 系列文章:https://itrhx.blog.csdn.net/category_9780397.html

推荐学习资料与网站(博主参与部分文档翻译):

  • NumPy 官方中文网:https://www.numpy.org.cn/
  • Pandas 官方中文网:https://www.pypandas.cn/
  • Matplotlib 官方中文网:https://www.matplotlib.org.cn/
  • NumPy、Matplotlib、Pandas 速查表:https://github.com/TRHX/Python-quick-reference-table

文章目录

    • 【1x00】直方图 / 柱状图 / 条形图的区别
    • 【2x00】直方图的绘制
      • 【2x01】函数介绍 matplotlib.pyplot.hist()
      • 【2x02】简单直方图示例
      • 【2x03】堆积的直方图
      • 【2x04】填充其他样式
    • 【3x00】柱状图的绘制
      • 【3x01】函数介绍 matplotlib.pyplot.bar()
      • 【3x02】简单柱状图示例
      • 【3x03】添加与标准差的误差线
      • 【3x04】多序列柱状图
      • 【3x05】堆积的柱状图
      • 【3x06】填充其他样式
      • 【3x07】添加文字描述
    • 【4x00】条形图的绘制
      • 【4x01】函数介绍 matplotlib.pyplot.barh()
      • 【4x02】简单条形图示例
      • 【4x03】添加与标准差的误差线
      • 【4x04】多序列条形图
      • 【4x05】堆积的条形图
      • 【4x06】填充其他样式
      • 【4x07】添加文字描述


这里是一段防爬虫文本,请读者忽略。
本文原创首发于 CSDN,作者 TRHX。
博客首页:https://itrhx.blog.csdn.net/
本文链接:https://itrhx.blog.csdn.net/article/details/105952856
未经授权,禁止转载!恶意转载,后果自负!尊重原创,远离剽窃!

【1x00】直方图 / 柱状图 / 条形图的区别

  • 直方图:直方图(Histogram)又称质量分布图,是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据分布的情况。一般用于描述连续型数据的分布关系,用横轴表示数据类型,纵轴表示分布情况。直方图是用面积表示各组频数的多少,矩形的高度表示每一组的频数或频率,宽度则表示各组的组距,因此其高度与宽度均有意义。其次,由于分组数据具有连续性,直方图的各矩形通常是连续排列。

  • 柱状图:柱状图(bar chart)又称条图、长条图、柱状统计图、条状图、棒形图,是一种以长方形的长度为变量的统计图表。一般用于描述离散型分类数据的对比,长条图用来比较两个或以上的价值(不同时间或者不同条件),只有一个变量,通常利用于较小的数据集分析。柱状图亦可横向排列,或用多维方式表达。柱状图各矩形的宽度固定,矩形之间分开排列,会有间距。

  • 条形图:通常情况下条形图 = 柱状图,也可以将横向排列的柱状图称为条形图。在本文中会将条形图视为后者。

分割线

【2x00】直方图的绘制

【2x01】函数介绍 matplotlib.pyplot.hist()

matplotlib.pyplot.hist() 函数用于绘制直方图。

基本语法:matplotlib.pyplot.hist(x[, bins=None, range=None, density=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, stacked=False, \*\*kwargs])

基本参数:

参数描述
x数据集,数组或数组序列
bins统计的分布区间、条形数,可以是整数、序列或字符串,默认 rcParams["hist.bins"] =10
如果 bins 是整数,则定义的是等宽的矩形的个数
如果 bins 是序列,则定义的是每个矩形的区间,如:bins = [1, 2, 3, 4],则矩形分布区间为 [1,2)[2,3)[3,4]
如果 bins 是字符串,则它应该是 numpy.histogram_bin_edges 所支持的策略之一
range矩形分布的区间,在没有指定 bins 生效,元组类型
density是否显示频率统计结果频率统计结果=区间数目/(总数*区间宽度)
bottomy 轴的起始位置,默认为 0
histtype矩形的样式,有四种类型可选:
'bar':默认值,传统的条形直方图,如果给出多个数据,则条形图并排排列
'barstacked':当数据为 1 个时,和 bar 结果一样,当数据为多个时,则进行垂直堆叠
'step':未填充的线条形式;'stepfilled':填充的线条形式,效果与 bar 差不多
align矩形的中心位于 bins(x 轴) 的位置,'left':左;'mid':中;'right':右
orientation矩形的方向,vertical:垂直;horizontal:水平
rwidth矩形的相对宽度,如果未指定,则自动计算宽度
logy 坐标轴是否以指数刻度显示
color矩形的颜色,默认蓝色,与 facecolor 作用相同,指定一个即可,如果两者都指定,则取 facecolor 的值
label数据的标签,展示图例时使用
stacked是否为堆积状图(当两个数据相似时,堆积在一起就会把第一个数据的显示相对缩小一点)

其他参数:

参数描述
facecolor标量或数组类型,每个矩形的颜色,与 color 作用相同,指定一个即可,如果两者都指定,则取 facecolor 的值
edgecolor标量或数组类型,直方图边缘线的颜色
linewidth标量或数组类型,直方图边缘线的宽度,如果为 0,则不绘制边
alphafloat 类型,矩形透明度
label图例中显示的标签
linestyle / ls线条样式,此处指矩形边缘线条样式
'-' or 'solid', '--' or 'dashed', '-.' or 'dashdot' or ':' or 'dotted', 'none' or ' ' or ''
linewidth / lw线条宽度,此处指矩形边缘线的宽度,float 类型,默认 0.8
hatch矩形的填充图案,可以是组合形式,如果有相同的图案,则会增加填充的密度
取值可以是:'/', '\', '|', '-', '+', 'x', 'o', 'O', '.', '*'

【2x02】简单直方图示例

import numpy as np
import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['Microsoft YaHei']  # 设置中文显示x = np.random.randint(0, 101, 100)  # 数据集
bins = np.arange(0, 101, 10)        # 分布区间 [0,10)、[10,20)...[90,100]plt.hist(x, bins=bins, linewidth=0.5, edgecolor='k')  # 边缘线宽0.5,颜色为黑色
plt.xlim(0, 100)                    # x 轴刻度范围       
plt.title('简单直方图示例')         # 标题
plt.xlabel('x axis label')         # x 轴标签
plt.ylabel('y axis label')         # y 轴标签plt.show()

01

【2x03】堆积的直方图

参数 stacked 决定了将两份数据进行堆积显示。注意,有可能两个数据相似(y 轴的值相似),但是堆积在一起的时候,会把第一个数据的显示相对缩小一点。

import matplotlib.pyplot as plt
import numpy as npplt.rcParams['font.sans-serif'] = ['Microsoft YaHei']hist1 = np.random.randint(0, 100, 100)
hist2 = np.random.randint(0, 100, 100)
x = [hist1, hist2]
colors = ['orchid', 'deepskyblue']
labels = ['hist1', 'hist2']
bins = range(0, 101, 10)# 绘制两份数据的直方图,数据集等其他参数可以使用列表形式传递,也可以使用两次 hist 函数单独传递
plt.hist(x, bins=bins, color=colors, stacked=True, label=labels)
plt.title('堆积的直方图示例')
plt.xlabel('x axis label')
plt.ylabel('y axis label')
plt.legend(loc="upper left")plt.show()

02

【2x04】填充其他样式

hatch 参数可以让直方图的矩形填充其他样式,可选值有:'/', '\', '|', '-', '+', 'x', 'o', 'O', '.', '*'。可以是不同图案的组合形式,如果有相同的图案,则会增加填充的密度。

import numpy as np
import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['Microsoft YaHei']  # 设置中文显示x = np.random.randint(0, 101, 100)  # 数据集
bins = np.arange(0, 101, 10)        # 分布区间 [0,10)、[10,20)...[90,100]# 矩形颜色为白色,使用 / 填充,边缘线宽0.5,颜色为黑色
plt.hist(x, bins=bins, color='w', hatch='///', linewidth=0.5, edgecolor='k')
plt.xlim(0, 100)                   # x 轴刻度范围
plt.title('直方图图案填充示例')     # 标题
plt.xlabel('x axis label')         # x 轴标签
plt.ylabel('y axis label')         # y 轴标签plt.show()

03

分割线

【3x00】柱状图的绘制

【3x01】函数介绍 matplotlib.pyplot.bar()

matplotlib.pyplot.bar() 函数用于绘制柱状图。

基本语法:matplotlib.pyplot.bar(x, height[, width=0.8, bottom=None, align='center', \*\*kwargs])

基本参数:

参数描述
x标量序列,每个矩形对应的 x 轴刻度
height标量或标量序列,每个矩形对应的高度,即 y 轴刻度
width标量或数组类型,每个矩形的宽度,默认为 0.8
bottom标量或数组类型,y 轴的起始位置,默认为 0
align矩形与 x 轴刻度对齐的位置,'center':中;'edge':左边缘

其他参数:

参数描述
color标量或数组类型,每个矩形的颜色,与 facecolor 作用相同,指定一个即可,如果两者都指定,则取 facecolor 的值
edgecolor标量或数组类型,柱状图边缘线的颜色
linewidth标量或数组类型,柱状图边缘线的宽度,如果为0,则不绘制边
tick_label标量或数组类型,柱状图 x 轴的刻度标签,默认使用数字标签
xerr / yerr标量,指定对应标准差(添加误差线时会用到)
ecolor标量或数组类型,误差线的线条颜色,默认值为 black
capsize标量,误差线两头横线的宽度,默认为 rcParams["errorbar.capsize"] = 0.0
error_kw字典类型,可以此字典中定义 ecolor 和 capsize,比单独指定的优先级要高
logbool 值,y 坐标轴是否以指数刻度显示
alphafloat 类型,矩形透明度
label图例中显示的标签
linestyle / ls线条样式,此处指矩形边缘线条样式
'-' or 'solid', '--' or 'dashed', '-.' or 'dashdot' or ':' or 'dotted', 'none' or ' ' or ''
linewidth / lw线条宽度,此处指矩形边缘线的宽度,float 类型,默认 0.8
hatch矩形的填充图案,可以是组合形式,如果有相同的图案,则会增加填充的密度
取值可以是:'/', '\', '|', '-', '+', 'x', 'o', 'O', '.', '*'

【3x02】简单柱状图示例

import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['Microsoft YaHei']x = [1, 2, 3, 4, 5]
height = [5, 7, 4, 3, 1]# 设置 x 轴的标签,也可以用 plt.xticks 方法来设置
tick_label = ['A', 'B', 'C', 'D', 'E']
# 设置颜色序列
color = ['red', 'yellow', 'peru', 'orchid', 'deepskyblue']
# 绘制柱状图,边缘线宽度为1,颜色为黑色,样式为 --
plt.bar(x, height, tick_label=tick_label, color=color, edgecolor='k', linewidth=1, linestyle='--')plt.title('简单柱状图示例')
plt.xlabel('x axis label')
plt.ylabel('y axis label')plt.show()

04

【3x03】添加与标准差的误差线

首先定义一个列表,其中的元素是与每个值对应的标准差,ecolorcapsize 参数分别指定误差线的颜色和两头横线的宽度。这两个参数可以通过 error_kw 字典形式组合起来。以字典形式的组合优先级别要比单独指定高。另外,柱状图指定标准差时要用 yerr,条形图(横向排列的柱状图)指定标准差时要用 xerr

import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['Microsoft YaHei']x = [1, 2, 3, 4, 5]
height = [5, 7, 4, 3, 2]
std = [0.5, 0.1, 1.2, 0.3, 1.0]   # 标准差tick_label = ['A', 'B', 'C', 'D', 'E']  # 设置 x 轴的标签,也可以用 plt.xticks 方法来设置
color = ['red', 'yellow', 'peru', 'orchid', 'deepskyblue']  # 设置颜色序列
plt.bar(x,height,tick_label=tick_label,color=color,yerr=std,              # 指定对应标准差# error_kw={#     'ecolor': 'k',   # 指定误差线的颜色#     'capsize': 6     # 指定误差线两头横线的宽度# },ecolor='k',capsize=6,edgecolor='k',         # 指定边缘线颜色linewidth=1            # 指定边缘线宽度
)plt.title('柱状图添加误差线示例')
plt.xlabel('x axis label')
plt.ylabel('y axis label')plt.show()

05

【3x04】多序列柱状图

在绘制多序列的柱状图时,只需要多次调用 matplotlib.pyplot.bar() 函数即可,指定一个较小的宽度值(偏移量),绘制不同数据时设置不同的 x 位置刻度即可。

import numpy as np
import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['Microsoft YaHei']x = np.arange(5)
height1 = np.array([5, 7, 4, 3, 2])
height2 = np.array([2, 4, 6, 7, 3])
height3 = np.array([3, 1, 7, 5, 2])# 设置宽度值(偏移量)
width = 0.3
# 绘制不同数据时,x 轴依次增加一个偏移量
plt.bar(x, height1, width, label='bar1')
plt.bar(x + width, height2, width, label='bar2')
plt.bar(x + width * 2, height3, width, label='bar3')# 设置 x 轴刻度的标签
plt.xticks(x + width, ['A', 'B', 'C', 'D', 'E'])
plt.title('多序列柱状图示例')
plt.xlabel('x axis label')
plt.ylabel('y axis label')
plt.legend()plt.show()

06

【3x05】堆积的柱状图

所谓堆积图,就是将多序列数据堆积到一个矩形上显示,在柱状图中要实现堆积图,只需要改变 bottom 参数即可,bottom 参数用于设置 y 轴基线,即柱状图的底边在 y 轴上的起始刻度,第一条数据 data1 的基线可以设置为 0,即默认值,第二条数据 data2 的基线可以设置在 data1 的上方,即 bottom=data1,第三条数据 data3 的基线可以设置在 data1 + data2 的上方,即 bottom=data1+data2,以此类推。

import numpy as np
import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['Microsoft YaHei']x = np.arange(5)
height1 = np.array([5, 7, 4, 3, 2])
height2 = np.array([2, 4, 6, 7, 3])
height3 = np.array([3, 1, 7, 5, 2])plt.bar(x, height1, label='bar1')
plt.bar(x, height2, label='bar2', bottom=height1)
plt.bar(x, height3, label='bar3', bottom=(height2+height1))plt.xticks(x, ['A', 'B', 'C', 'D', 'E'])
plt.title('堆积的柱状图示例')
plt.xlabel('x axis label')
plt.ylabel('y axis label')
plt.legend()plt.show()

07

【3x06】填充其他样式

hatch 参数可以让柱状图的矩形填充其他样式,可选值有:'/', '\', '|', '-', '+', 'x', 'o', 'O', '.', '*'。可以是不同图案的组合形式,如果有相同的图案,则会增加填充的密度。

import numpy as np
import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['Microsoft YaHei']x = np.arange(5)
height1 = np.array([5, 7, 4, 3, 2])
height2 = np.array([2, 4, 6, 7, 3])
height3 = np.array([3, 1, 7, 5, 2])plt.bar(x, height1, label='bar1', color='w', hatch='///')
plt.bar(x, height2, label='bar2', bottom=height1, color='w', hatch='xxx')
plt.bar(x, height3, label='bar3', bottom=(height2+height1), color='w', hatch='|||')plt.xticks(x, ['A', 'B', 'C', 'D', 'E'])
plt.title('柱状图图案填充示例')
plt.xlabel('x axis label')
plt.ylabel('y axis label')
plt.legend()plt.show()

08

【3x07】添加文字描述

利用 matplotlib.pyplot.text() 方法可以在柱状图每个矩形上方添加文字描述。具体参数解释可参考前面的文章:《Python 数据分析三剑客之 Matplotlib(二):文本描述 / 中文支持 / 画布 / 网格等基本图像属性》

import numpy as np
import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['Microsoft YaHei']x = np.arange(5)
height1 = np.array([5, 7, 4, 3, 2])
height2 = np.array([2, 4, 6, 7, 3])
height3 = np.array([3, 1, 7, 5, 2])width = 0.3
# 绘制不同数据时,x 轴依次增加一个偏移量
plt.bar(x, height1, width, label='bar1')
plt.bar(x + width, height2, width, label='bar2')
plt.bar(x + width * 2, height3, width, label='bar3')# 依次添加每条数据的标签
for a, b in zip(x, height1):plt.text(a, b, b, ha='center', va='bottom')
for c, d in zip(x, height2):plt.text(c + width, d, d, ha='center', va='bottom')
for e, f in zip(x, height3):plt.text(e + width * 2, f, f, ha='center', va='bottom')# 设置 x 轴刻度的标签
plt.xticks(x + width, ['A', 'B', 'C', 'D', 'E'])
plt.title('柱状图添加文字描述示例')
plt.xlabel('x axis label')
plt.ylabel('y axis label')
plt.legend()plt.show()

09

分割线


这里是一段防爬虫文本,请读者忽略。
本文原创首发于 CSDN,作者 TRHX。
博客首页:https://itrhx.blog.csdn.net/
本文链接:https://itrhx.blog.csdn.net/article/details/105952856
未经授权,禁止转载!恶意转载,后果自负!尊重原创,远离剽窃!

【4x00】条形图的绘制

【4x01】函数介绍 matplotlib.pyplot.barh()

matplotlib.pyplot.barh() 函数用于绘制条形图(水平排列的柱状图)。

基本语法:matplotlib.pyplot.barh(y, width[, height=0.8, left=None, align='center', color, \*\*kwargs])

参数描述
y标量或数组类型,每个矩形对应的 y 轴刻度
width标量或数组类型,每个矩形的宽度,即 x 轴刻度
height标量序列,每个矩形的高度,默认 0.8
left标量序列,每个矩形的左侧 x 坐标的起始位置,默认值为 0
align矩形的底边与 y 轴刻度对齐的位置,'center':中;'edge':底边

其他参数:

参数描述
color标量或数组类型,每个矩形的颜色,与 facecolor 作用相同,指定一个即可,如果两者都指定,则取 facecolor 的值
edgecolor标量或数组类型,条形图边缘线的颜色
linewidth标量或数组类型,条形图边缘线的宽度,如果为0,则不绘制边
tick_label标量或数组类型,条形图 y 轴的刻度标签,默认使用数字标签
xerr / yerr标量,指定对应标准差(添加误差线时会用到)
ecolor标量或数组类型,误差线的线条颜色,默认值为 black
capsize标量,误差线两头横线的宽度,默认为 rcParams["errorbar.capsize"] = 0.0
error_kw字典类型,可以此字典中定义 ecolor 和 capsize,比单独指定的优先级要高
logbool 值,y 坐标轴是否以指数刻度显示
alphafloat 类型,矩形透明度
label图例中显示的标签
linestyle / ls线条样式,此处指矩形边缘线条样式
'-' or 'solid', '--' or 'dashed', '-.' or 'dashdot' or ':' or 'dotted', 'none' or ' ' or ''
linewidth / lw线条宽度,此处指矩形边缘线的宽度,float 类型,默认 0.8
hatch矩形的填充图案,可以是组合形式,如果有相同的图案,则会增加填充的密度
取值可以是:'/', '\', '|', '-', '+', 'x', 'o', 'O', '.', '*'

【4x02】简单条形图示例

import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['Microsoft YaHei']y = [1, 2, 3, 4, 5]
width = [5, 7, 4, 3, 1]tick_label = ['A', 'B', 'C', 'D', 'E']
color = ['red', 'yellow', 'peru', 'orchid', 'deepskyblue']
plt.barh(y, width, tick_label=tick_label, color=color, edgecolor='k', linewidth=1, linestyle='--')plt.title('简单条形图示例')
plt.xlabel('x axis label')
plt.ylabel('y axis label')plt.show()

10

【4x03】添加与标准差的误差线

与柱状图一样,首先定义一个列表,其中的元素是与每个值对应的标准差,ecolorcapsize 参数分别指定误差线的颜色和两头横线的宽度。这两个参数可以通过 error_kw 字典形式组合起来。以字典形式的组合优先级别要比单独指定高。另外,柱状图指定标准差时要用 yerr,条形图(横向排列的柱状图)指定标准差时要用 xerr

import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['Microsoft YaHei']y = [1, 2, 3, 4, 5]
width = [5, 7, 4, 3, 2]
std = [0.5, 0.1, 1.2, 0.3, 1.0]  # 标准差tick_label = ['A', 'B', 'C', 'D', 'E']   # 设置 x 轴的标签,也可以用 plt.xticks 方法来设置
color = ['red', 'yellow', 'peru', 'orchid', 'deepskyblue']  # 颜色序列
plt.barh(y,width,tick_label=tick_label,color=color,xerr=std,               # 指定对应标准差# error_kw={#     'ecolor': 'k',    # 指定误差线的颜色#     'capsize': 6      # 指定误差线两头横线的宽度# },ecolor='k',capsize=6,edgecolor='k',          # 指定边缘线颜色linewidth=1             # 指定边缘线宽度
)plt.title('条形图添加误差线示例')
plt.xlabel('x axis label')
plt.ylabel('y axis label')plt.show()

11

【4x04】多序列条形图

与多序列柱状图类似,在绘制多序列的条形图时,只需要多次调用 matplotlib.pyplot.barh() 函数即可,指定一个较小的高度值(偏移量),绘制不同数据时设置不同的 y 位置刻度即可。

import numpy as np
import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['Microsoft YaHei']y = np.arange(5)
width1 = np.array([5, 7, 4, 3, 2])
width2 = np.array([2, 4, 6, 7, 3])
width3 = np.array([3, 1, 7, 5, 2])# 设置高度值(偏移量)
height = 0.3
# 绘制不同数据时,y 轴依次增加一个偏移量
plt.barh(y, width1, height, label='bar1')
plt.barh(y + height, width2, height, label='bar2')
plt.barh(y + height * 2, width3, height, label='bar3')# 设置 y 轴刻度的标签
plt.yticks(y + height, ['A', 'B', 'C', 'D', 'E'])
plt.title('多序列条形图示例')
plt.xlabel('x axis label')
plt.ylabel('y axis label')
plt.legend()plt.show()

12

【4x05】堆积的条形图

堆积图就是将多序列数据堆积到一个矩形上显示,和堆积的柱状图类似,在条形图中要实现堆积图,只需要改变 left 参数即可,left 参数用于设置 x 轴基线,即柱状图的底边在 x 轴上的起始刻度,第一条数据 data1 的基线可以设置为 0,即默认值,第二条数据 data2 的基线可以设置在 data1 的上方,即 left=data1,第三条数据 data3 的基线可以设置在 data1 + data2 的上方,即 left=data1+data2,以此类推。

import numpy as np
import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['Microsoft YaHei']y = np.arange(5)
width1 = np.array([5, 7, 4, 3, 2])
width2 = np.array([2, 4, 6, 7, 3])
width3 = np.array([3, 1, 7, 5, 2])plt.barh(y, width1, label='bar1')
plt.barh(y, width2, label='bar2', left=width1)
plt.barh(y, width3, label='bar3', left=(width1+width2))plt.yticks(y, ['A', 'B', 'C', 'D', 'E'])
plt.title('堆积的条形图示例')
plt.xlabel('x axis label')
plt.ylabel('y axis label')
plt.legend()plt.show()

13

【4x06】填充其他样式

hatch 参数可以让柱状图的矩形填充其他样式,可选值有:'/', '\', '|', '-', '+', 'x', 'o', 'O', '.', '*'。可以是不同图案的组合形式,如果有相同的图案,则会增加填充的密度。

import numpy as np
import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['Microsoft YaHei']y = np.arange(5)
width1 = np.array([5, 7, 4, 3, 2])
width2 = np.array([2, 4, 6, 7, 3])
width3 = np.array([3, 1, 7, 5, 2])plt.barh(y, width1, label='bar1', color='w', hatch='///')
plt.barh(y, width2, label='bar2', left=width1, color='w', hatch='xxx')
plt.barh(y, width3, label='bar3', left=(width1+width2), color='w', hatch='|||')plt.yticks(y, ['A', 'B', 'C', 'D', 'E'])
plt.title('条形图图案填充示例')
plt.xlabel('x axis label')
plt.ylabel('y axis label')
plt.legend()plt.show()

14

【4x07】添加文字描述

利用 matplotlib.pyplot.text() 方法可以在条形图每个矩形上方添加文字描述。具体参数解释可参考前面的文章:《Python 数据分析三剑客之 Matplotlib(二):文本描述 / 中文支持 / 画布 / 网格等基本图像属性》

import numpy as np
import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['Microsoft YaHei']y = np.arange(5)
width1 = np.array([5, 7, 4, 3, 2])
width2 = np.array([2, 4, 6, 7, 3])
width3 = np.array([3, 1, 7, 5, 2])height = 0.3
# 绘制不同数据时,y 轴依次增加一个偏移量
plt.barh(y, width1, height, label='bar1')
plt.barh(y + height, width2, height, label='bar2')
plt.barh(y + height * 2, width3, height, label='bar3')# 依次添加每条数据的标签
for a, b in zip(width1, y):plt.text(a, b-0.05, a)
for c, d in zip(width2, y):plt.text(c, d+0.20, c)
for e, f in zip(width3, y):plt.text(e, f+0.50, e)# 设置 y 轴刻度的标签
plt.yticks(y + height, ['A', 'B', 'C', 'D', 'E'])
plt.title('条形图添加文字描述示例')
plt.xlabel('x axis label')
plt.ylabel('y axis label')
plt.legend()plt.show()

15


这里是一段防爬虫文本,请读者忽略。
本文原创首发于 CSDN,作者 TRHX。
博客首页:https://itrhx.blog.csdn.net/
本文链接:https://itrhx.blog.csdn.net/article/details/105952856
未经授权,禁止转载!恶意转载,后果自负!尊重原创,远离剽窃!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/437721.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hive环境搭建(完整版)-配置

Hive部署: 前提: 在安装Hive之前,要求先预装: - 安装JDK 8 - 安装Hadoop-2.7.7 - 安装MySQL 5.6.x!!!我这里主节点叫chun1,根据自己的进行修改 一、安装 1. 下载hive&#xff0c…

Magento微信支付接口开发小记

姗姗来迟的Magento微信支付接口插件 半年之前,有朋友网站需要接入微信支付,是Magento站,于是花费了近二周时间,研究微信开发文档、示例代码,并初步制作了个支付模块,不巧的是,朋友的微信支付接…

VMware安装出错-无法安装服务“VMware Authorization Service”,请确保您有足够的权限安装系统服务;centos7网络服务不可用,主ip地址:网络信息不可用

今天遇到一个bug,VMware突然网络服务不可用了,虚拟机里右上角有网络但是点开不显示网络的连接信息。也不能上网,不能ping通外网(百度) VMware下显示 主ip地址:网络信息不可用 尝试了重启网络,重…

Python 数据分析三剑客之 Matplotlib(七):饼状图的绘制

CSDN 课程推荐:《Python 数据分析与挖掘》,讲师刘顺祥,浙江工商大学统计学硕士,数据分析师,曾担任唯品会大数据部担任数据分析师一职,负责支付环节的数据分析业务。曾与联想、亨氏、网鱼网咖等企业合作多个…

访问网络共享时出现“拒绝访问”

今天公司副总说要我连接一下前面的打印机,二话不说,屁颠屁颠的就到现场了。虽然是简单的活,但也得去不是。 到老总计算机上 开始--运行 \\192.168.0.45 (装有打印的计算机,OS是XP系统!) 结果出…

zookeeper集群自动启动-关闭-查询的shell脚本

由于zookeeper启动需要在每台虚拟机都进行zkServer.sh start,很不方便,由此写个shell脚本来进行一个命令全部启动。 前提:配置好ssh免密登录,并且每台虚拟机都可以互通,没配置好的可以看下我的hadoop集群搭建里有免密…

Python 数据分析三剑客之 Matplotlib(八):等高线 / 等值线图的绘制

CSDN 课程推荐:《Python 数据分析与挖掘》,讲师刘顺祥,浙江工商大学统计学硕士,数据分析师,曾担任唯品会大数据部担任数据分析师一职,负责支付环节的数据分析业务。曾与联想、亨氏、网鱼网咖等企业合作多个…

【转】Office365完整离线安装包下载及自定义安装教程

Office365部署方法 概要提示: 全文内容归结起来其实也就2条命令 下载:D:\365\setup.exe /download D:\365\Configuration.xml(此命令为1条,不可以拆分为2行输入) 安装:D:\365\setup.exe /configure D:\3…

Python 数据分析三剑客之 Matplotlib(九):极区图 / 极坐标图 / 雷达图的绘制

CSDN 课程推荐:《Python 数据分析与挖掘》,讲师刘顺祥,浙江工商大学统计学硕士,数据分析师,曾担任唯品会大数据部担任数据分析师一职,负责支付环节的数据分析业务。曾与联想、亨氏、网鱼网咖等企业合作多个…

【转】中国式管理最有趣的地方,可能就在这些关键词之中

曾仕强老先生的中国式管理,就像中医中药,你说他对吗?根本不符合现代的科学逻辑,有些甚至荒诞。然而,即便这样,依然能西医所不能,这就是他的魅力。让我们一探究竟,对也好,…

Python 数据分析三剑客之 Matplotlib(十):3D 图的绘制

CSDN 课程推荐:《Python 数据分析与挖掘》,讲师刘顺祥,浙江工商大学统计学硕士,数据分析师,曾担任唯品会大数据部担任数据分析师一职,负责支付环节的数据分析业务。曾与联想、亨氏、网鱼网咖等企业合作多个…

Hbase学习-一步一步慢慢来

HBASE是一个分布式系统 其中有一个管理角色: HMaster(一般2台,一台active,一台backup)(我用的五台) 其他的数据节点角色: HRegionServer(很多台,看数据容量) 1.安装可以参考我的Hbase安装&…

Python 数据分析三剑客之 Matplotlib(十一):最常用最有价值的 50 个图表

CSDN 课程推荐:《Python 数据分析与挖掘》,讲师刘顺祥,浙江工商大学统计学硕士,数据分析师,曾担任唯品会大数据部担任数据分析师一职,负责支付环节的数据分析业务。曾与联想、亨氏、网鱼网咖等企业合作多个…

【转】Windows Server 2012 R2 双网卡绑定

双网卡绑定主要有以下两点好处: 1、实现网络容错:主主模式和主被模式 2、带宽聚合 首先准备工作需要两台虚拟机,Server01是目标服务器,需要有两块网卡,并且清空两块网卡的现有配置,Server02作为测试机。 …

解决Hbase输入list,创建表报错,输入status可以,org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: S

今天恢复了一下快照,然后hbase出现了问题 2019-08-25 00:59:55,810 INFO [RpcServer.default.FPBQ.Fifo.handler28,queue1,port16000] client.RpcRetryingCallerImpl: ,1 is not online on chun4,16020,1566665941494at org.apache.hadoop.hbase.regionserver.HRe…

Python 数据分析三剑客之 Pandas(一):认识 Pandas 及其 Series、DataFrame 对象

CSDN 课程推荐:《迈向数据科学家:带你玩转Python数据分析》,讲师齐伟,苏州研途教育科技有限公司CTO,苏州大学应用统计专业硕士生指导委员会委员;已出版《跟老齐学Python:轻松入门》《跟老齐学Py…

【转】通过第三方工具体验Microsoft Graph

上一篇文章我介绍了如何利用官方提供的Graph 浏览器快速体验Microsoft Graph强大功能,这是极好的起点。官方的Graph浏览器力图用最简单的方式帮助您使用Microsoft Graph,为此也隐藏了很多细节。为了帮助大家更好地理解Microsoft Graph的工作原理&#xf…

【转】通过Graph 浏览器体验Microsoft Graph

上一篇介绍了Microsoft Graph的基本概念,接下来我们快速体验一下Microsoft Graph到底能做什么? 为了帮助开发人员直观和快速体验Microsoft Graph的魅力,官方提供了一个专门的工具,叫做Graph 浏览器(Graph Explorer&am…

【转】wpf和winform的区别

WinForm是Net开发平台中对Windows Form的一种称谓。 WPF(Windows Presentation Foundation)是微软推出的基于Windows 的用户界面框架,属于.NET Framework 3.0的一部分。它提供了统一的编程模型、语言和框架,真正做到了分离界面设计…

sqoop(数据迁移工具)-安装-学习

sqoop 1)概述 sqoop是apache旗下一款“Hadoop和关系数据库服务器之间传送数据”的工具。 导入数据:MySQL,Oracle导入数据到Hadoop的HDFS、HIVE、HBASE等数据存储系统; 导出数据:从Hadoop的文件系统中导出数据到关系数…