欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

机器学习之 matplotlib笔记1

程序员文章站 2023-11-06 23:38:16
散点图-scatter 散点图显示两组数据的值,每个点的坐标位置由变量的值决定由一组不连接的点完成,用于观察两种变量的相关 折线图 折线图是用直线段将各数据连接起来组成的图形常用来观察数据随时间变化的趋势 条形图 以长方形的长度为变量的统计图表,用来比较多个项目分类的数据大小,通常利用于较小的数据集 ......

 散点图-scatter

散点图显示两组数据的值,每个点的坐标位置由变量的值决定由一组不连接的点完成,用于观察两种变量的相关

 1 import numpy as np
 2 import matplotlib.pyplot as plt  #导入绘图模块
 3 
 4 height = [161, 170, 182, 175, 173, 165]
 5 weight = [50, 58, 80, 70, 69, 55]
 6 
 7 plt.scatter(height, weight)
 8 n = 1000
 9  x = np.random.randn(n)
10 # y1 = np.random.randn(n)
11 y1 = -x + np.random.randn(n)*0.5
12 
13 
14 # 绘制散点图的命令行
15 plt.scatter(x, y1, s=100, c='r', marker='o', alpha=0.5)
16 # s表示点的面积,c表示点的颜色,marker表示点的形状,alpha表示点的透明度
17 
18 plt.show()

折线图

折线图是用直线段将各数据连接起来组成的图形常用来观察数据随时间变化的趋势

 1 import numpy as np
 2 import matplotlib.pyplot as plt
 3 import matplotlib.dates as mdates
 4 
 5 x = np.linspace(-10, 10, 100)
 6 
 7 # y = x**2
 8 y = np.sin(x)
 9 
10 plt.plot(x, y, linestyle='-.', color='g', marker='^')
11 # 折线图的基本绘制命令行,linestyle为要画的线型,color为线的颜色,marker为点的形状
12 # 在matplotlib官网中,有关于线型,颜色,点的形状的全面介绍
13 
14 plt.show()

条形图

以长方形的长度为变量的统计图表,用来比较多个项目分类的数据大小,通常利用于较小的数据集分析

条形图可以以单列,并列,层叠方式画图

 

 1 import numpy as np
 2 import matplotlib.pyplot as plt
 3 
 4 # 单列模式
 5 n = 5
 6 y = [20, 10, 30, 25, 15]
 7 index = np.arange(n)
 8 
 9 # plt.bar(x=index, height=y, width=0.5, color='r')
10 # x表示的是x轴上对应的第几个条形,height表示的y轴上对应条形的高度,
11 # width表示条形的 宽度
12 plt.bar(index, y, 0.5, color='r')  # x=,height=,width=,可以省略
13 
14 
15 # 条形图也可以横着放
16 # x需要赋0值,bottom表示条形块的底部即对应纵轴上的坐标,
17 # width表示条形块横着放的高度,相当于横轴上(横向)的宽度,
18 # height表示条形块纵向的宽度,orientation='horizontal'表示要画横向的条形图
19 pl = plt.bar(x=0, bottom=index, color='red', width=y, height=0.5, 
20                  orientation='horizontal')
21 # 横向条形图有第二种方式,这里的y轴应赋值第几个条形快即index
22 # pl = plt.barh(y=index, color='red', width=y,)
23 
24 
25 plt.show()
 1 import numpy as np
 2 import matplotlib.pyplot as plt
 3 
 4 # 并列式绘条形图,将两个条形图共用一个坐标轴,并列的画在一起
 5 index = np.arange(4)
 6 sales_bj = [52,55,63,53]
 7 sales_sh = [44,66,55,41]
 8 
 9 bar_width = 0.3
10 plt.bar(index,sales_bj,bar_width,color='b')
11 
12 # 这个并列的条形图的横轴上的坐标可以用index+bar_width来表示
13 # 目的是不与第一个重叠
14 plt.bar(index+bar_width,sales_sh,bar_width,color='r')
15 
16 plt.show()
 1 import numpy as np
 2 import matplotlib.pyplot as plt
 3 
 4 
 5 # 层叠绘图
 6 index = np.arange(4)
 7 sales_bj = [52,55,63,53]
 8 sales_sh = [44,66,55,41]
 9 
10 bar_width = 0.3
11 plt.bar(index,sales_bj,bar_width,color='b')
12 
13 # 第二个要层叠的对象需要加bottom=sales_bj,表示层叠底部的对象是上一个
14 plt.bar(index,sales_sh,bar_width,color='r',bottom=sales_bj)
15 
16 plt.show()

 直方图

由一系列高度不等的纵向条形组成,表示数据分布的情况注意和条形图的区别

 1 import numpy as np
 2 import matplotlib.pyplot as plt
 3 
 4 mu = 100
 5 sigma = 20
 6 x = mu + sigma * np.random.randn(20000)
 7 
 8 # 单变量频率分布直方图,用条形的高度表示频率分布的大小
 9 # bins=100是将x轴取到的数分100个等份的条形块
10 # normed=false表示这里的每个条形即每个区间所占的个数
11 # normed=true时表示每个条形区间占总数的比例
12 plt.hist(x,bins=100,color='green',normed=false)
13 
14 # 双变量变量频率分布直方图,用颜色的深浅表示频率的分布大小
15 # x = np.random.randn(1000)+2
16 # y = np.random.randn(1000)+3
17 # plt.hist2d(x,y,bins=40)
18 plt.show()

饼状图

饼状图显示一个数据系列中各项的大小与各项总和的比例饼状图中的数据点显示为整个饼状图的百分比

 1 import matplotlib.pyplot as plt
 2 
 3 labels = ('a','b','c','d')
 4 fracs = [15,30,45,10]
 5 
 6 explode = [0,0.05,0.08,0]
 7 
 8 plt.axes(aspect=1)  # 如果横纵方向不是1:1,这个可以将要画的图默认为1:1
 9 
10 plt.pie(x=fracs,labels=labels,autopct='%.1f%%',explode=explode,shadow=true)
11 # autopct='%.1f%%'表示每一块所占总块的比例,
12 # explode=explode表示每块分离出的距离
13 # shadow=true将分离出的饼块添加阴影
14 
15 plt.show()

 箱形图

箱形图(box-plot)又称为盒须图、盒式图或箱线图

是一种用作显示一组数据分散情况资料的统计图

上边缘,上四分位数,中位数,下四分位数,下边缘,异常值

 

 1 import numpy as np
 2 import matplotlib.pyplot as plt
 3 
 4 np.random.seed(100)
 5 
 6 # 单个箱形图
 7 data = np.random.normal(size=1000,loc=0,scale=1)
 8 # 此代码行表示正态分布,size表示随机选取的数值数量,
 9 # loc为概率分布的平均值,是概率分布中心,
10 # scale是概率分布标准差,对应于分布的宽度,scale越大越矮胖,scale越小,越瘦高
11 
12 plt.boxplot(data, sym='o',whis=1.5)
13 # sym表示异常值点的形状,whis表示异常值与需线的比例值,在官网有具体说明
14 
15 #多个箱形图在同一个坐标轴中
16 # data = np.random.normal(size=(1000,4),loc=0,scale=1)
17 # labels = ['a','b','c','d']
18 # plt.boxplot(data,labels=labels)
19 
20 plt.show()