使用Matplotlib画散点图和直方图
1.散点图
(1)plt.scatter散点图
plt.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, *, data=None, **kwargs)
解释:
x,y:表示的是大小为(n,)的数组,也就是我们即将绘制散点图的数据点
s:是一个实数或者是一个数组大小为(n,),这个是一个可选的参数。
c:表示的是颜色,也是一个可选项。默认是蓝色'b',表示的是标记的颜色,或者可以是一个表示颜色的字符,或者是一个长度为n的表示颜色的序列等等,感觉还没用到过现在不解释了。但是c不可以是一个单独的RGB数字,也不可以是一个RGBA的序列。可以是他们的2维数组(只有一行)。
marker:表示的是标记的样式,默认的是'o'。
cmap:Colormap实体或者是一个colormap的名字,cmap仅仅当c是一个浮点数数组的时候才使用。如果没有申明就是image.cmap
norm:Normalize实体来将数据亮度转化到0-1之间,也是只有c是一个浮点数的数组的时候才使用。如果没有申明,就是默认为colors.Normalize。
vmin,vmax:实数,当norm存在的时候忽略。用来进行亮度数据的归一化。
alpha:实数,0-1之间。
linewidths:也就是标记点的长度。
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] # 用黑体显示中文
# 显示所有列,同理:max_rows
pd.options.display.max_columns=None # 显示所有列
# pd.options.display.max_rows=None # 显示所有行
plt.rcParams['font.sans-serif']=['SimHei'] # 用黑体显示中文
df = pd.read_excel(r'data/16.散点图.xlsx')
# print(df)
plt.title('身高体重散点图')
plt.xlabel('身高')
plt.ylabel('体重')
plt.scatter(df.身高,df.体重,s=df.身高,c='b',marker='o',alpha=0.6,linewidths=1)
plt.savefig('散点图.jpg')
plt.show()
2.直方图
首先需要区分清楚概念:直方图和条形图。
条形图:条形图用长条形表示每一个类别,长条形的长度表示类别的频数,宽度表示表示类别。
直方图:直方图是一种统计报告图,形式上也是一个个的长条形,但是直方图用长条形的面积表示频数,所以长条形的高度表示 频数/组距,宽度表示组距,其长度和宽度均有意义。当宽度相同时,一般就用长条形长度表示频数。
直方图一般用来描述等距数据,柱状图一般用来描述名称(类别)数据或顺序数据。直观上,直方图各个长条形是衔接在一起的,表示数据间的数学关系;条形图各长条形之间留有空隙,区分不同的类。
import pandas as pd
import matplotlib.pyplot as plt
# 显示所有列,同理:max_rows
pd.options.display.max_columns=None
plt.rcParams['font.sans-serif']=['SimHei'] # 用黑体显示中文
df = pd.read_excel(r'data/17.直方图.xlsx')
plt.hist(df.身高,bins=30,facecolor='b',edgecolor='r',alpha=0.8)
plt.savefig('直方图.png')
plt.show()