开发者学堂课程【Python 常用数据科学库:直方图与散点图】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/546/detail/7506
直方图与散点图
内容简介
一、直方图
二、散点图
一、直方图
Import numpy as np
Import matplotlib.pyplot as plt
对于直方图来说,最重要的就是数据,于是引用数据:
Data=np.random normal(0,20,1000)
有数据之后要分到一个 bin 当中,于是可以自己指定一个 bins:
Bins=np.arange(-100,100,5),
表示从负100到100中,每5个取一个数。
接下来画出直方图:
Plt,hist(data,bins=bins)
Plt.show
总代码如下:
Import numpy as np
Import matplotlib.pyplot as plt
Data=np.random normal(0,20,1000)
Bins=np.arange(-100,100,5)
Plt,hist(data,bins=bins)
Plt.show
可以继续对其进行美化:对其最大值和最小值进行限制:
Plt.xlim([min(data)-5,max(data)-5]
通过以上代码之后,画出的就是最基本的直方图。
如果有2个数据分布,就需要重新指定,将其分别画出:
Import random
Data1=[ramdom gaus(15,10) for I in range (500)]
Data2=[ramdom gaus(5,5) for I in range (500)]
Bins=np.arange(-50,50,2.5)
Plt,hist(data1,bins=bins)
Plt,hist(data1,bins=bins)
Pl.show()
代码画出之后,直方图有很多个颜色,所以可以对其不指定颜色。
Import random
Data1=[ramdom gaus(15,10) for I in range (500)]
Data2=[ramdom gaus(5,5) for I in range (500)]
Bins=np.arange(-50,50,2.5)
Plt,hist(data1,bins=bins,label=’class1’)
Plt,hist(data1,bins=bins, label=’class1’)
Pl.show()
如果想看到堆叠的程度,就可以指定 Alpha 值:
Import random
Data1=[ramdom gaus(15,10) for I in range (500)]
Data2=[ramdom gaus(5,5) for I in range (500)]
Bins=np.arange(-50,50,2.5)
Plt,hist(data1,bins=bins,label=’class1’,alpha=0.3)
Plt,hist(data1,bins=bins, label=’class1’, alpha=0.3)
Pl.show()
此时就可以把2组数据分别画出来了,还可以加入标识。以上就是直方图的画法。
二、散点图
散点图,也就是将一些点分布在一个图中。数据复制之后,也就是指定了均值和方差。这样就可以通过均值和平方差将数据构造出来,可以直接查看如何将散点图画出。
首先指定 figure:
Plt.figure(figsize=(8,6))
Plt.scatter(x1_samples[:,0],x1_samples[:,1],markaer=’x’,color=’blue’,alpha=0.3,label=’x1’)
Plt.scatter(x2_samples[:,0],x1_samples[:,1],markaer=’o’,color=’red’,alpha=0.3,label=’x2’)
Plt.scatter(x3_samples[:,0],x1_samples[:,1],markaer=’’,color=’green’,alpha=0.3,label=’x3’)
执行以上代码之后,系统报错。更改之后,代码如下:
Plt.figure(figsize=(8,6))
Plt.scatter(x1_samples[:,0],x1_samples[:,1],markaer=’x’,color=’blue’,alpha=0.3,label=’x1’)
Plt.scatter(x2_samples[:,0],x1_samples[:,1],markaer=’o’,color=’red’,alpha=0.3,label=’x2’)
Plt.scatter(x3_samples[:,0],x1_samples[:,1],markaer=’’,color=’green’,alpha=0.3,label=’x3’)
Plt.show
执行以上代码之后。颜色太浅,可以更改阿尔法的值,再加入标识。代码的含义就是按散点图当中的第一维为数据传进来,第二维数据传进来,长什么样子,什么颜色,设置阿尔法值就可以了。把直方图和散点图的区别就在于接口如何调。
在构造一个数据,X 和 Y 就相当于当前的坐标:
Plt.figure(figsize=(8,6))
用当前的东西再画一个散点图。现在都是一个一个点,想将点的坐标写出来。就分别传入它的坐标。然后指定 marker:
Plt.scatter(x_coords,y_croords,y_coords,marker=’s’,s=50)
Plt.show()
图片如下:
还想加入每个点的具体坐标,就要加入
for X,Y in zip(x_coords, y_coords):
Plt.annotate(‘(%s,%s)%(x,y),xy=(x,y),xytext=(0,-15),textcoords=’offset points’)
此时画出了每个点的坐标。但坐标与点没有对齐,就可以加入 ha=’center’。散点图当中经常会加坐标,以上就是加坐标的教程。 还可以指定一个均值和标准差,指定好 figure size 之后构造数据。在数据当中指定一个指标,对于散点图来说要画许多点,这些点能否按照大小不同做一个规范,就可以通过指定:
R=X**2
在散点图当中就要把数据传进去,第一位是0,第二位是1,再继续指定颜色, Size 可以是指定的数乘当前的比例。代码如下。画出来的图就是以00为圆心算出来的平方和。随着平方和越大 size 就会变大。代码如下:
cov_mat1=np.array([[1.0].[0.1]])
X = np. random. multivariate_normal (mu_vecl, cov_matl. 500)
fig = plt.figure(figsize=(8,6))
R=X**2
R_sun=R. sun(axís = 1)
plt. scatter(X[:,0],X[:, 1],color='grey',marker='o',s=20*
R_sun,alpha=0.5)
plt.show()
可以按照设计好的模式来自定义点的大小。