第二章 使用matplotlib绘制简单图表

第二章 使用matplotlib绘制简单图表

1.绘制折线图

1.1.使用plot()绘制折线图

​ 使用pyplot的plot()函数可以快速绘制折线图。plot()函数的语法格式如下:

plot(x, y, fmt, scalex=True, scaley=True, data=None, label=None, *args, **kwargs)
  • x:表示x轴的数据,默认值为range(len(y))。

  • **y:**表示y轴的数据。

  • **fmt:**表示快速设置线条样式的格式字符串。

  • **label:**表示应用于图例的标签文本。

    plot()函数会返回一个包含Line2D类对象(代表线条)的列表。

    使用pyplot的plot()函数还可以绘制具有多个线条的折线图,通过以下任意一种方式均可以完成。

  1. 多次调用plot()函数来绘制具有多个线条的折线图:

    plt.plot(x1, y1)
    plt.plot(x2, y2)
    
  2. 调用plot()函数时传入一个二维数组来绘制具有多个线条的折线图,例如将二维数组arr的第一行数据作为x轴数据,其他行数据全部作为y轴数据:

    arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9],[10, 11, 12]])
    plt.plot(arr[0], arr[1:]) 
    
  3. 调用plot()函数时传入多组数据来绘制具有多个线条的折线图:

    plt.plot(x1, y1, x2, y2)
    

    **示例:**要求根据下表的数据,将日期列的数据作为x轴数据,将最高气温和最低气温两列的数据作为y轴数据,使用plot()函数绘制下图所示的折线图。

image-20230830165856158

​ 根据图示我们可以得知:将“日期”这一列作为x轴数据,将“最高气温”和“最低气温”两列的数据作为y轴数据,代码实现如下:

import matplotlib.pyplot as plt
import numpy as npx = np.arange(4, 19)
y_max = np.array([32, 33, 34, 34, 33, 31, 30, 29, 30,29, 26, 23, 21, 25, 31])
y_min = np.array([19, 19, 20, 22, 22, 21, 22, 16, 18,18, 17, 14, 15, 16, 16])
# 绘制折线图
plt.plot(x, y_max)
plt.plot(x, y_min)
plt.show()

​ 运行结果如下:

image-20230830172913886

2.绘制柱形图或堆积柱形图

2.1.使用bar()绘制柱形图或堆积柱形图

​ 使用pyplot的bar()函数可以快速地绘制柱形图或堆积柱形图 。bar()函数的语法格式如下:

bar(x, height, width=0.8, bottom=None, align=‘center’, tick_label=None, xerr=None, yerr=None, **kwargs)
  • **x:**表示柱形的x坐标值
  • **height:**表示柱形的高度
  • **width:**表示柱形的宽度,默认为0.8。
  • **bottom:**表示柱形底部的y值,默认为0。
  • tick_label:表示柱形对应的刻度标签。
  • **xerr,yerr 😗*若未设为None,则需要为柱形图添加水平/垂直误差棒

bar()函数会返回一个BarContainer类的对象。BarContainer类的对象是一个包含柱形或误差棒的容器,它亦可以视为一个元组,可以遍历获取每个柱形或误差棒。此外,BarContainer类的对象也可以访问patcheserrorbar属性分别获取图表中所有的柱形或误差棒。

​ 例如,绘制以下柱形图:

image-20230830205717615
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(5)
y1 = np.array([10, 8, 7, 11, 13])
# 柱形的宽度
bar_width = 0.3
# 绘制柱形图
plt.bar(x, y1, tick_label=['a', 'b', 'c', 'd', 'e'], width=bar_width)
plt.show()

​ 运行结果如下:

image-20230830212828144

​ 使用pyplot的bar()函数还可以绘制具有多组柱形的柱形图,如下图:

image-20230830213408066
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(5)
y1 = np.array([10, 8, 7, 11, 13])
y2 = np.array([19, 6, 5, 10, 12])
# 柱形的宽度
bar_width = 0.3
# 根据多组数据绘制柱形图
plt.bar(x, y1, tick_label=['1月', '2月', '3月', '4月', '5月'],width=bar_width)
plt.bar(x+bar_width, y2, width=bar_width)
plt.show()
  • 可以使用bottom参数传值的方式控制柱形的y值,使后悔之的柱形图位于先绘制的柱形的上方
plt.bar(x, y1, tick_label=['1月', '2月', '3月', '4月', '5月'],width=bar_width)
# plt.bar(x+bar_width, y2, width=bar_width)
plt.bar(x, y2, bottom=y1, width=bar_width)
  • 可以通过给xerr、yerr参数传值的方式为柱形添加误差棒:
error = [2, 1, 2.5, 2, 1.5]
# 根据多组数据绘制柱形图
plt.bar(x, y1, tick_label=['1月', '2月', '3月', '4月', '5月'],width=bar_width)
plt.bar(x, y2, bottom=y1, width=bar_width, yerr=error)
plt.show()
image-20230830214154713

2.2.实例:2013-2019财年某电商平台的GMV

​ 本实例要求根据下表的数据,将财年列的数据作为x轴数据,将GMV(一定时间内的成交总额)列的数据作为y轴数据,使用bar()函数绘制下图所示的柱形图。

image-20230830214348652 image-20230830214359861
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(1, 8)
y = np.array([10770, 16780, 24440, 30920, 37670, 48200, 57270])
# 绘制柱形图
plt.bar(x, y, tick_label=['FY2013', 'FY2014', 'FY2015', 'FY2016','FY2017', 'FY2018', 'FY2019'], width=0.5)
plt.show()

3.绘制条形图或堆积条形图

3.1.使用barh()绘制条形图或堆积条形图

​ 使用pyplot的barh()函数可以快速地绘制条形图或堆积条形图 ,语法格式如下:

barh(y, width, height=0.8, left=None, align='center', *, **kwargs)
  • y:表示条形的y值
  • **width:**表示条形的宽度
  • **height:**表示条形的高度,默认值为0.8。
  • **left:**条形左侧的x坐标值,默认值为0。
  • align:表示条形的对齐方式,默认值为“center”,即条形与刻度线居中对齐。
  • **tick_label:**表示条形对应的刻度标签
  • **xerr,yerr:**若未设为None,则需要为条形图添加水平/垂直误差棒

​ 例如,绘制如下图形:

image-20230831153032805
import numpy as np
import matplotlib.pyplot as plt
y = np.arange(5)
x1 = np.array([10, 8, 7, 11, 13])
# 条形的高度
bar_height = 0.3
# 绘制条形图
plt.barh(y, x1, tick_label=['a', 'b', 'c', 'd', 'e'],height=bar_height)
plt.show()
  • 使用barh()函数还可以绘制具有多组条形的条形图:
import numpy as np
import matplotlib.pyplot as plty = np.arange(5)
x1 = np.array([10, 8, 7, 11, 13])
x2 = np.array([9, 6, 5, 10, 12])
bar_height = 0.3
plt.barh(y, x1, tick_label=['a', 'b', 'c', 'd', 'e'], height=bar_height)
plt.barh(y+bar_height, x2, height=bar_height)
plt.show()
image-20230831153421807
  • 使用barh()函数还可以通过给left参数传值的方式控制条形的x值,使后绘制的条形位于先绘制的条形的右方:
plt.barh(y, x1, tick_label=['a', 'b', 'c', 'd', 'e'], height=bar_height)
# plt.barh(y+bar_height, x2, height=bar_height)
plt.barh(y, x2, left=x1, height=bar_height)
plt.show()
image-20230831153933135
  • 在使用barh()函数绘制图表时,可以通过给xerr、yerr参数传值的方式为条形添加误差棒:
error = [2, 1, 2.5, 2, 1.5]
plt.barh(y, x1, tick_label=['a', 'b', 'c', 'd', 'e'], height=bar_height)
# plt.barh(y+bar_height, x2, height=bar_height)
plt.barh(y, x2, left=x1, height=bar_height, xerr=error)
plt.show()
image-20230831154238597

3.2.实例:各商品种类的网购代替率

​ 网络购物已经成为人们日常生活的一部分,它在创造新的消费方式的同时,也在改变着人们的消费模式和习惯,成为拉动居民消费的重要渠道。国家统计局抽取了771个样本,并根据这些样本测算用户网购替代率(网购用户线上消费对线下消费的替代比率)的情况。

image-20230831154343494 image-20230831154823523

​ 根据图示可以得知,将“商品种类”一列的数据作为y轴的刻度标签,将“替代率”一列的数据作为x轴的数据,具体代码如下:

import numpy as np
import matplotlib.pyplot as plt# 显示中文
# 运行配置参数中的字体(font)为黑体(SimHei)
plt.rcParams['font.sans-serif'] = ['SimHei']
#运行配置参数总的轴(axes)正常显示正负号(minus)
plt.rcParams['axes.unicode_minus'] = False
x = np.array([0.959, 0.951, 0.935, 0.924, 0.893,0.892, 0.865, 0.863, 0.860, 0.856,0.854, 0.835, 0.826, 0.816, 0.798,0.765, 0.763, 0.670])
y = np.arange(1, 19)
labels = ["家政、家教、保姆等生活服务", "飞机票、火车票", "家具","手机、手机配件", "计算机及其配套产品", "汽车用品", "通信充值、游戏充值","个人护理用品", "书报杂志及音像制品", "餐饮、旅游、住宿", "家用电器","食品、饮料、烟酒、保健品", "家庭日杂用品", "保险、演出票务","服装、鞋帽、家用纺织品", "数码产品", "其他商品和服务", "工艺品、收藏品"]
# 绘制条形图
plt.barh(y, x, tick_label=labels, align="center", height=0.6)
plt.show()
image-20230831160148239

4.绘制堆积面积图

4.1.使用stackplot()绘制堆积面积图

​ 使用pyplot的stackplot()函数可以快速地绘制堆积面积图 ,语法格式为:

stackplot(x, y,labels=(), baseline='zero', data=None, *args, **kwargs)
  • **x:**表示x轴的数据,可以是一维数组。

  • **y:**表示y轴的数据,可以是二维数组或一维数组序列。

  • **labels:**表示每个填充区域的标签。

  • baseline:表示计算基线的方法,包括zero、sym、wiggle和weighted_wiggle。其中zero表示恒定零基线,即简单的叠加图;sym表示对称于零基线;wiggle表示最小化平方斜率之和;weighted_wiggle表示执行相同的操作,但权重用于说明每层的大小。

    绘制如下图示:

    image-20230831160751380
import numpy as np
import matplotlib.pyplot as pltx = np.arange(6)
y1 = np.array([1, 4, 3, 5, 6, 7])
y2 = np.array([1, 3, 4, 2, 7, 6])
y3 = np.array([3, 4, 3, 6, 5, 5])
# 绘制堆积面积图
plt.stackplot(x, y1, y2, y3)
plt.show()

4.2.实例:物流公司物流费用统计

​ 近些年我国物流行业蓬勃房展,目前已经有近几千家物流公司,其中部分物流公司大打价格战,以更低的价格吸引更多的客户,从而抢占市场份额。 本实例要求根据下表的数据,将月份列的数据作为x轴的刻度标签,将A公司、B公司、C公司这三列数据作为y轴的数据,使用stackplot()函数绘制下图所示的堆积面积图。

image-20230831160910086image-20230831160917986

image-20230831160951004
import numpy as np
import matplotlib.pyplot as pltx = np.arange(1, 13)
y_a = np.array([198, 215, 245, 222, 200, 236, 201, 253, 236, 200, 266, 290])
y_b = np.array([203, 236, 200, 236, 269, 216, 298, 333, 301, 349, 360, 368])
y_c = np.array([185, 205, 226, 199, 238, 200, 250, 209, 246, 219, 253, 288])
# 绘制堆积面积图
plt.stackplot(x, y_a, y_b, y_c)
plt.show()
image-20230831161901361

5.绘制直方图

5.1.使用hist绘制直方图

​ 使用pyplot的hist()函数可以快速地绘制直方图 ,语法格式如下:

hist(x, bins=None, range=None, density=None, weights=None, bottom=None,  **kwargs) 
  • **x:**表示x轴的数据。

  • **bins:**表示矩形条的个数,默认为10。

  • **range:**表示数据的范围,若未设置范围,默认数据范围为(x.min(), x.max())。

  • **cumulative:**表示是否计算累计频数或频率。

  • **histtype:**表示直方图的类型,支持’bar’、‘barstacked’、‘step’、'stepfilled‘四种取值,其中’bar’为默认值,代表传统的直方图;'barstacked’代表堆积直方图;'step’代表未填充的线条直方图;'stepfilled’代表填充的线条直方图。

    绘制如下直方图:

    image-20230831162333401
import numpy as np
import matplotlib.pyplot as plt
# 准备50个随机测试数据
scores = np.random.randint(0,100,50)
# 绘制直方图
plt.hist(scores, bins=8, histtype='stepfilled')
plt.show()

5.2.实例:人脸识别的灰度直方图

​ 人脸识别技术是一种生物特征识别技术,它通过从装有摄像头的终端设备拍摄的人脸图像中抽取人的个性化特征,以此来识别人的身份。灰度直方图是实现人脸识别的方法之一,它将数字图像的所有像素按照灰度值的大小统计其出现的频率。

image-20230831162424376

​ 本实例要求使用一组10000个随机数作为人脸图像的灰度值,使用hist()函数绘制下图所示的灰度直方图。

image-20230831162511943
import numpy as np
import matplotlib.pyplot as plt
# 10000个随机数
random_state = np.random.RandomState(19680801)
radom_x = random_state.randn(10000)
# 绘制包含25个矩形条的直方图
plt.hist(radom_x, bins=25)
plt.show()

6.绘制饼图或圆环图

6.1.使用pie()绘制饼图或圆环图

​ 使用pyplot的pie()函数可以快速地绘制饼图或圆环图 ,语法格式如下:

pie(x, explode=None, labels=None, autopct=None, pctdistance=0.6, startangle=None, *, data=None) 
  • **x:**表示扇形或楔形的数据。
  • **explode:**表示扇形或楔形离开圆心的距离
  • **labels:**表示扇形或楔形对应的标签文本。
  • **autopct:**表示控制扇形或楔形的数值显示的字符串,可通过格式字符串指定小数点后的位数。%.1f%
  • **pctdistance:**表示扇形或楔形对应的数值标签距离圆心的比例,默认为0.6。
  • **shadow:**表示是否显示阴影
  • **labeldistance:**表示标签文本的绘制位置(相对于半径的比例),默认为1.1。

绘制圆环图:

pie(x, explode=None, labels=None, autopct=None, pctdistance=0.6, startangle=None, *, data=None) 
  • **startangle:**表示起始绘制角度,默认从x轴的正方向逆时针绘制。
  • **radius:**表示扇形或楔形围成的圆形半径
  • **wedgeprops:**表示控制扇形或楔形属性的字典。例如,通过wedgeprops = {‘width’: 0.7} 将楔形的宽度设为0.7。
  • **textprops:**表示控制图表中文本属性的字典。
  • center:表示图表的中心点位置,默认为(0,0)。
  • **frame:**表示是否显示图框。

绘制饼图:

import numpy as np
import matplotlib.pyplot as plt
data = np.array([20, 50, 10, 15, 30, 55])
pie_labels = np.array(['A', 'B', 'C', 'D', 'E', 'F'])
# 绘制饼图:半径为0.5,数值保留1位小数
plt.pie(data, radius=1.5, labels=pie_labels, autopct='%3.1f%%')
plt.show()
image-20230901114434245

绘制圆环图:

import numpy as np
import matplotlib.pyplot as plt
data = np.array([20, 50, 10, 15, 30, 55])
pie_labels = np.array(['A', 'B', 'C', 'D', 'E', 'F'])
# 绘制圆环图
plt.pie(data, radius=1.5, wedgeprops={'width': 0.7}, labels=pie_labels, autopct='%3.1f%%',      pctdistance=0.75) 
plt.show()
image-20230901114656330

6.2.实例:支付宝月账单报告

​ 近年来随着支付App的出现,人们的生活发生了翻天覆地的变化,无论是到超市选购商品,还是跟朋友聚餐,或是来一场说走就走的旅行,都可以使用移动支付App轻松完成支付,非常便捷。支付宝是人们使用较多的支付方式,它拥有自动记录每月账单的功能,可以方便用户了解每月资金的流动情况。

image-20230901114749972

​ 本实例要求根据下表的数据,将分类列的数据作为饼图的标签,将各分类对应的金额与总支出金额的比例作为饼图的数据,使用pie()函数绘制下图所示的饼图。

image-20230901114823288 image-20230901114902930
import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
# 饼状图外侧文字说明
kinds = ['购物', '人情往来', '餐饮美食', '通信物流', '生活日用','交通通行', '休闲娱乐', '其他']
# 饼状图数据
money_scale = [800/3000, 100/3000, 1000/3000, 200/3000,300/3000, 200/3000, 200/3000, 200/3000]
dev_position = [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]
# 饼图绘制
plt.pie(money_scale, labels=kinds, autopct='%3.1f%%', shadow=True,explode=dev_position, startangle=90)
plt.show()
image-20230901115912918

7.绘制散点图或气泡图

7.1.使用scatter()绘制散点图或气泡图

​ 使用pyplot的scatter()函数可以快速地绘制散点图或气泡图,语法格式如下:

scatter(x, y, s=None, c=None, marker=None, cmap=None, linewidths=None, edgecolors=None, *, **kwargs) 
  • **x,y:**表示数据点的位置
  • **s:**表示数据点的大小
  • **c:**表示数据点的颜色
  • **marker:**表示数据点的样式,默认为圆形,‘o’。
  • **alpha:**表示透明度,可以取值为0~1。
  • **linewidths:**表示数据点的描边宽度
  • **edgecolors:**表示数据点的描边颜色

绘制散点图:

import numpy as np
import matplotlib.pyplot as plt
num = 50
x = np.random.rand(num)
y = np.random.rand(num)
plt.scatter(x, y)
plt.show()
image-20230901120355056

绘制气泡图:

import numpy as np
import matplotlib.pyplot as plt
num = 50
x = np.random.rand(num)
y = np.random.rand(num)
area = (30 * np.random.rand(num))**2
plt.scatter(x, y, s=area)
plt.show()
image-20230901120450130

7.2.汽车速度与制动距离的关系

​ 汽车的制动距离主要取决于汽车的车速。若车速增加1倍,则汽车的制动距离将增大至近4倍。某汽车生产公司对一批丰田汽车进行抽样测试,并分别记录了不同的车速对应的制动距离。

​ 本实例要求根据下表的数据,将车速(km/h)列的数据作为x轴的数据,将制动距离(m)列的数据作为y轴的数据,使用scatter()函数绘制下图所示的散点图。

image-20230901120616339 image-20230901120701033
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 准备x轴和y轴数据
x_speed = np.arange(10, 210, 10)
y_distance = np.array([0.5, 2.0, 4.4, 7.9, 12.3, 17.7,24.1, 31.5, 39.9, 49.2, 59.5, 70.8,83.1, 96.4, 110.7, 126.0, 142.2,159.4, 177.6, 196.8])
# 绘制散点图
plt.scatter(x_speed, y_distance, s=50, alpha=0.9)
plt.show()
image-20230901121159049

8.绘制箱型图

8.1.使用boxplot()绘制箱型图

​ 使用pyplot的boxplot()函数可以快速地绘制箱形图,语法格式如下:

boxplot(x, notch=None, sym=None, vert=None, whis=None, positions=None, widths=None, *, data=None)
  • **x:**绘制箱形图的数据。
  • **sym:**表示异常值对应的符号,默认为空心圆圈。
  • **vert:**表示是否将箱形图垂直摆放,默认为垂直摆放。
  • **whis:**表示箱形图上下须与上下四分位的距离,默认为1.5倍的四分位差。
  • **positions:**表示箱体的位置。
  • **widths:**表示箱体的宽度,默认为0.5。
  • **patch_artist:**表示是否填充箱体的颜色,默认不填充。
  • **meanline:**是否用横跨箱体的线条标出中位数,默认不使用。
  • **showcaps:**表示是否显示箱体顶部和底部的横线,默认显示。
  • **showbox:**表示是否显示箱形图的箱体,默认显示。
  • **showfliers:**表示是否显示异常值,默认显示。
  • **labels:**表示箱形图的标签。
  • **boxprops:**表示控制箱体属性的字典。
import numpy as np
import matplotlib.pyplot as plt
data = np.random.randn(100)
plt.boxplot(data, meanline=True, widths=0.3, patch_artist=True,showfliers=False)
plt.show()
image-20230901121641873

8.2.实例:2017年和2018年全国发电量统计

​ 本实例要求根据下表的数据,将发电量(亿千瓦时)列的数据作为x轴的数据,将2017年和2018年作为y轴的刻度标签,使用boxplot()函数绘制下图所示的箱形图。

image-20230901121755313 image-20230901121819891
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
data_2018 = np.array([5200, 5254.5, 5283.4, 5107.8, 5443.3,5550.6, 6400.2, 6404.9, 5483.1, 5330.2, 5543, 6199.9])
data_2017 = np.array([4605.2, 4710.3, 5168.9, 4767.2, 4947,5203, 6047.4, 5945.5, 5219.6, 5038.1,5196.3, 5698.6])
# 绘制箱型图
plt.boxplot([data_2018, data_2017], labels=('2018年', '2017年'),meanline=True, widths=0.5, vert=False, patch_artist=True)
plt.show()
image-20230901122658316

9.绘制雷达图

9.1.使用polar()绘制雷达图

​ 使用pyplot的polar()函数可以快速地绘制雷达图,语法格式如下:

polar(theta, r, **kwargs) 
  • **theta:**表示每个数据点所在射线与极径的夹角。
  • **r:**表示每个数据点到原点的距离。

9.2.实例:霍兰德职业兴趣测试

​ 霍兰德职业兴趣测试是由美国职业指导专家霍兰德根据他本人大量的职业咨询经验及其职业类型理论编制的测评工具。

​ 根据个人兴趣的不同,霍兰德将人格分为研究型(I)、艺术型(A)、社会型(S)、企业型(E)、传统型(C)和现实型(R)6个维度,将这6个维度不同程度的组合形成每个人的性格。

image-20230901122907777

​ 本实例要求根据下表的数据,将标题一行的数据作为雷达图的标签,将其余行的数据作为雷达图的数据,使用polar()函数绘制下图所示的雷达图。

image-20230901122932807 image-20230901122947108

​ 由图可知,用户1偏向于现实型人格;用户2偏向于研究型人格;用户3偏向于艺术型人格;用户4偏向于企业型人格;用户5偏向于社会型人格;用户6偏向于传统型人格。

import numpy as np
import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
dim_num = 6
data = np.array([[0.40, 0.32, 0.35, 0.30, 0.30, 0.88],[0.85, 0.35, 0.30, 0.40, 0.40, 0.30],[0.43, 0.89, 0.30, 0.28, 0.22, 0.30],[0.30, 0.25, 0.48, 0.85, 0.45, 0.40],[0.20, 0.38, 0.87, 0.45, 0.32, 0.28],[0.34, 0.31, 0.38, 0.40, 0.92, 0.28]])
angles = np.linspace(0, 2 * np.pi, dim_num, endpoint=False)
angles = np.concatenate((angles, [angles[0]]))
data = np.concatenate((data, [data[0]]))
# 维度标签
radar_labels = ['研究型(I)', '艺术性(A)', '社会性(S)','企业型(E)', '传统型(C)', '现实性(R)']
radar_labels = np.concatenate((radar_labels, [radar_labels[0]]))
# 绘制雷达图
plt.polar(angles, data)
# 设置极坐标的标签
plt.thetagrids(angles * 180/np.pi, labels=radar_labels)
# 填充多边形
plt.fill(angles, data, alpha=0.25)
plt.show()
image-20230901214438459

10.绘制误差棒图

10.1.使用errerbar()绘制误差棒

​ 使用pyplot的errorbar()函数可以快速地绘制误差棒图,语法格式如下:

errorbar(x, y, yerr=None, xerr=None, fmt='', ecolor=None,  *, data=None, **kwargs) 
  • **x,y:**表示数据点的位置
  • **xerr,yerr:**表示数据的误差范围
  • **fmt:**表示数据点的标记样式和数据点之间连接线的样式。
  • **elinewidth:**表示误差棒的线条宽度
  • **capsize:**表示误差棒边界横杆的大小
  • **capthick:**表示误差棒边界横杆的厚度
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(5)
y = (25, 32, 34, 20, 25)
y_offset = (3, 5, 2, 3, 3)
plt.errorbar(x, y, yerr=y_offset, capsize=3, capthick=2)
plt.show()
image-20230901214813768

10.2.实例:4个书中不同季节的细跟生物量

​ 细根生物量的多少反映了根系从土壤中吸收水分和养分的能力,是植物地下部分集汇能力的重要体现。不同树种细根生物量存在差异性,各树种细根生物量在不同季节间差异较为明显。

image-20230901214942358

​ 本实例要求根据下表的数据,将季节列的数据作为x轴的刻度标签,将其他列的数据作为y轴的数据,使用errorbar()函数绘制下图所示的误差棒图。

image-20230901214959163 image-20230901215019641
import numpy as np
import matplotlib.pyplot as pltplt.rcParams['font.family'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
# 准备 x 轴和 y 轴的数据
x = np.arange(3)
y1 = np.array([2.04, 1.57, 1.63])
y2 = np.array([1.69, 1.61, 1.64])
y3 = np.array([4.65, 4.99, 4.94])
y4 = np.array([3.39, 2.33, 4.10])
# 指定测量偏差
error1 = [0.16, 0.08, 0.10]
error2 = [0.27, 0.14, 0.14]
error3 = [0.34, 0.32, 0.29]
error4 = [0.23, 0.23, 0.39]
bar_width = 0.2
# 绘制柱形图
plt.bar(x, y1, bar_width)
plt.bar(x + bar_width, y2, bar_width, align="center",tick_label=["春季", "夏季", "秋季"])
plt.bar(x + 2*bar_width, y3, bar_width)
plt.bar(x + 3*bar_width, y4, bar_width)
# 绘制误差棒 : 横杆大小为 3,  线条宽度为 3,  线条颜色为黑色, 数据点标记为像素点
plt.errorbar(x, y1, yerr=error1, capsize=3, elinewidth=2, fmt=' k,')
plt.errorbar(x + bar_width, y2, yerr=error2, capsize=3, elinewidth=2, fmt='k,')
plt.errorbar(x + 2*bar_width, y3, yerr=error3, capsize=3, elinewidth=2, fmt='k,')
plt.errorbar(x + 2*bar_width, y3, yerr=error3, capsize=3, elinewidth=2, fmt='k,')
plt.show()

y4 = np.array([3.39, 2.33, 4.10])

指定测量偏差

error1 = [0.16, 0.08, 0.10]
error2 = [0.27, 0.14, 0.14]
error3 = [0.34, 0.32, 0.29]
error4 = [0.23, 0.23, 0.39]
bar_width = 0.2

绘制柱形图

plt.bar(x, y1, bar_width)
plt.bar(x + bar_width, y2, bar_width, align=“center”,
tick_label=[“春季”, “夏季”, “秋季”])
plt.bar(x + 2bar_width, y3, bar_width)
plt.bar(x + 3
bar_width, y4, bar_width)

绘制误差棒 : 横杆大小为 3, 线条宽度为 3, 线条颜色为黑色, 数据点标记为像素点

plt.errorbar(x, y1, yerr=error1, capsize=3, elinewidth=2, fmt=’ k,')
plt.errorbar(x + bar_width, y2, yerr=error2, capsize=3, elinewidth=2, fmt=‘k,’)
plt.errorbar(x + 2bar_width, y3, yerr=error3, capsize=3, elinewidth=2, fmt=‘k,’)
plt.errorbar(x + 2
bar_width, y3, yerr=error3, capsize=3, elinewidth=2, fmt=‘k,’)
plt.show()


<img src="https://gitee.com/zou_tangrui/note-pic/raw/master/img/202309012155492.png" alt="image-20230901215530350" style="zoom:50%;" />

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

工业互联网:数字化革命的引擎

工业互联网&#xff0c;作为数字化革命的引擎&#xff0c;正以前所未有的速度和力度改变着我们的世界。这一概念不再局限于企业内部的信息技术应用&#xff0c;而是将互联网、大数据、人工智能等技术深度融入到制造业、能源、交通、农业等各个领域&#xff0c;实现了设备、系统…

【深度学习】ONNX模型多线程快速部署【基础】

【深度学习】ONNX模型CPU多线程快速部署【基础】 提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论 文章目录 【深度学习】ONNX模型CPU多线程快速部署【基础】前言搭建打包环境python多线程并发简单教程基本教程ONNX模型多线程并发 打包成可执行文件总结 前…

rar格式转换zip格式,如何做?

平时大家压缩文件时对压缩包格式可能没有什么要求&#xff0c;但是&#xff0c;可能因为工作需要&#xff0c;我们要将压缩包格式进行转换&#xff0c;那么我们如何将rar格式转换为其他格式呢&#xff1f;方法如下&#xff1a; 工具&#xff1a;WinRAR 打开WinRAR&#xff0c…

友思特案例|友思特 Ensenso 3D相机:汽车工业自动化的革命性力量

01 内容摘要 在竞争激烈的汽车行业&#xff0c;自动化生产至关重要。友思特 Ensenso 3D相机为汽车制造商提供了可靠的工具和技术支持&#xff0c;助力多个关键环节。它在汽车座位泡棉切割中提高精确度&#xff0c;降低浪费&#xff0c;提高生产效率&#xff1b;在汽车压铸零部…

ad18学习笔记十二:如何把同属性的元器件全部高亮?

1、先选择需要修改的器件的其中一个。 2、右键find similar objects&#xff0c;然后在弹出的对话框中&#xff0c;将要修改的属性后的any改为same 3、像这样勾选的话&#xff0c;能把同属性的元器件选中&#xff0c;其他器件颜色不变 注意了&#xff0c;如果这个时候&#xff…

浅谈xss

XSS 简介 XSS,全称Cross Site Scripting,即跨站脚本攻击,是最普遍的Web应用安全漏洞。这类漏洞能够使得攻击者嵌入恶意脚本代码到正常用户会访问到的页面中,当正常用户访问该页面时,则可导致嵌入的恶意脚本代码的执行,从而达到恶意攻击用户的目的。需要强调的是,XSS不仅…

Win10专业版系统一键重装怎么操作?

Win10专业版系统一键重装怎么操作&#xff1f;与传统的系统重装相比&#xff0c;一键重装不仅省去了繁琐的安装步骤&#xff0c;这一简单操作使得系统维护和恢复变得更加便捷&#xff0c;让用户不再为系统问题而烦恼。下面小编给大家详细介绍关于一键重装Win10专业版系统的操作…

Tune-A-Video论文阅读

论文链接&#xff1a;Tune-A-Video: One-Shot Tuning of Image Diffusion Models for Text-to-Video Generation 文章目录 摘要引言相关工作文生图扩散模型文本到视频生成模型文本驱动的视频编辑从单个视频生成 方法前提DDPMsLDMs 网络膨胀微调和推理模型微调基于DDIM inversio…

ElasticSearch从入门到精通(二)

ElasticSearch 高级操作 bulk批量操作 批量操作-脚本 #批量操作 #1.删除5号 #新增8号 #更新2号 name为2号 POST _bulk {"delete":{"_index":"person1","_id":"5"}} {"create":{"_index":"person…

Android 10.0 系统开启和关闭黑白模式主题功能实现

1. 概述 在10.0的rom系统开发定制化中,在系统SystemUI的下拉状态栏中,产品开发功能需求要求添加黑白模式功能开关的功能,就是打开黑白模式,系统颜色就会变成黑白颜色, 关闭黑白模式开关系统就会变成彩色模式,所以就需要了解下系统是怎么设置黑白模式和彩色模式的,然后添…

docker下redis备份文件dump.rdb获取

1.查看镜像 docker ps -a 2.进入redis客户端 docker exec -it redis redis-cli 3.保存备份文件 save 4.查看文件存放位置 CONFIG GET dir 5.将docker中文件拷出 docker cp id或name:容器中文件的路径 目标目录地址

研究铜互连的规模能扩大到什么程度

随着领先的芯片制造商继续将finFET以及很快的纳米片晶体管缩小到越来越小的间距&#xff0c;使用铜及其衬垫和阻挡金属&#xff0c;较小的金属线将变得难以维持。接下来会发生什么以及何时发生&#xff0c;仍有待确定。 自从IBM在20世纪90年代向业界引入采用双镶嵌工艺的铜互连…

一文教你彻底理解什么是协程!

作为程序员&#xff0c;想必你多多少少听过协程这个词&#xff0c;这项技术近年来越来越多的出现在程序员的视野当中&#xff0c;尤其高性能高并发领域。当你的同学、同事提到协程时如果你的大脑一片空白&#xff0c;对其毫无概念。。。 那么这篇文章正是为你量身打造的。话不…

flink集群与资源@k8s源码分析-回顾

本章是分析系列最后一章,作为回顾,以运行架构图串联起所有分析场景 1 启动集群,部署集群(提交k8s),新建作业管理器组件 2 构建和启动flink master组件 3 提交作业,N/A

性能测试分析调优必备的java虚拟机知识

Java虚拟机 Java虚拟机&#xff08;Java Virtual Machine&#xff0c;简称JVM&#xff09;是一种用于执行Java字节码的虚拟计算机。它是Java平台的关键组成部分&#xff0c;负责将Java源代码编译为可在不同计算机体系结构上执行的字节码。 JVM起到了中间层的作用&#xff0c…

IP转地理位置:探讨技术与应用

IP地址是互联网上设备的唯一标识符&#xff0c;而将IP地址转换为地理位置信息是网络管理、安全监控和市场定位等领域中的一项重要任务。本文将深入探讨IP转地理位置的技术原理和各种应用场景。 IP地址与地理位置 IP地址&#xff08;Internet Protocol Address&#xff09;是一…

面试官:你了解axios的原理吗?有看过它的源码吗?

面试官&#xff1a;你了解axios的原理吗&#xff1f;有看过它的源码吗&#xff1f; 一、axios的基本使用 关于 axios 的基本使用&#xff0c;上篇文章已经有所涉及&#xff0c;这里再稍微回顾一下&#xff1a; 发送请求 import axios from axios;axios(config) // 直接传入…

一百八十六、大数据离线数仓完整流程——步骤五、在Hive的DWS层建动态分区表并动态加载数据

一、目的 经过6个月的奋斗&#xff0c;项目的离线数仓部分终于可以上线了&#xff0c;因此整理一下离线数仓的整个流程&#xff0c;既是大家提供一个案例经验&#xff0c;也是对自己近半年的工作进行一个总结。 二、数仓实施步骤 &#xff08;五&#xff09;步骤五、在Hive的…

《从菜鸟到大师之路 MySQL 篇》

《从菜鸟到大师之路 MySQL 篇》 数据库是什么 数据库管理系统&#xff0c;简称为DBMS&#xff08;Database Management System&#xff09;&#xff0c;是用来存储数据的管理系统。 DBMS 的重要性 无法多人共享数据 无法提供操作大量数据所需的格式 实现读取自动化需要编程…

docker安装使用xdebug

docker安装使用xdebug 1、需要先安装PHP xdebug扩展 1.1 到https://pecl.php.net/package/xdebug下载tgz文件&#xff0c;下载当前最新稳定版本的文件。然后把这个tgz文件放到php/extensions目录下&#xff0c;记得install.sh中要替换解压的文件名&#xff1a; installExtensio…