python中matplotlib库的学习2
直方图
直方图的特点:上篇文章我完成了对条形图和折线图的整理
link
条形图这类图像是以矩形的长度表示每一组的频数或数量,其宽度(表示类别)则是固定的,利于较小的数据集分析
直方图是以矩形的长度表示每一组的频数或数量,宽度则表示各组的组距,因此其高度和宽度均有意义,利于展示大量数据集的统计·结果
由于分组数据具有连续性,直方图的各矩形通常是连续排列,而条形图则是分开排列
绘制直方图的主要方法是matplotlib.pyplot.hist(x, bins=10, range=None,density=False, weights=None, bottom=None,align=‘mid’,log=False,color=None, label=None, stacked=False hold=None,**kwargs)
x: 一个列表或者多个列表(表示不同数据集,长度可以不一致)
bins表示每个变量的值被分为多少份
density为false则显示频率分布,而不是概率密度
range: 元组
weights: x里每个元素对bin高度的贡献(默认为1)
bottom: 数字或者长度为bins的列表
align: [‘left’ | ‘mid’ | ‘right’]
color: 一种颜色或者颜色列表(针对不同数据集)
import numpy as np
import matplotlib.pyplot as plt
plt.style.use("ggplot")
mu1,mu2,sigma=100,130,10
x1=mu1+sigma*np.random.randn(10000)
x2=mu2+sigma*np.random.randn(10000)
#第五六行代码使用了python的随机数生成器创建了两个正态分布变量x1和x2,其中x1均值被设置为100,x2均值设置为130,正态分布的标准差为10
fig=plt.figure()#建立空图表
ax1=fig.add_subplot(1,1,1)#添加了一个子图
n,bins,patches=ax1.hist(x1,bins=50,density=False,color="darkblue")
n,bins,patches=ax1.hist(x2,bins=50,density=False,color="orange",alpha=0.5)
ax1.xaxis.set_ticks_position("top")#目前使用过的参数有top和bottom
ax1.yaxis.set_ticks_position("right")#目前使用过的参数有left和right
plt.xlabel("Bins")
plt.ylabel("Number of values in bin")
fig.suptitle("Histograms",fontsize=14,fontweight="bold")#设置副标题
ax1.set_title("Two Frequency Distributions")
plt.savefig("histogram.png",dpi=400,bbok_inches="tight")
plt.show()
散点图
散点图可以表示两个数值变量之间的相对关系,这两个变量分别位于两个数轴上,例如身高和体重,或者供给和需求。散点图有利于识别变量之间是否具有正相关(图中的点集中于某个具体参数)或负相关(图中的点较为发散)
通过这篇文章的学习,你甚至可以画一条回归曲线,也就是使方差最小的曲线,利用图中的点基于一个变量的值预测另一个变量的值
(直接梦回高中苦逼的算回归方程的日子????)
下面是一个散点图例子的相关代码
import numpy as np
import matplotlib.pyplot as plt
plt.style.use("ggplot")
x=np.arange(start=1,stop=15,step=1)#通过开始值和终值创建对应公差的一维数组
y_linear=x+5*np.random.randn(14)
y_quadratic=x**2+10*np.random.randn(14)
#5,6行通过随机数使数据与一条直线与二次曲线稍稍偏离
fn_linear=np.poly1d(np.polyfit(x,y_linear,deg=1))
fn_quadratic=np.poly1d(np.polyfit(x,y_quadratic,deg=2))
# 第8、9行则是通过numpy的polyfit函数通过两组数据的点来拟合出一条直线和二次曲线,再使用poly1d根据直线和二次曲线的参数生成一个线性方程和二次方程
fig=plt.figure()
ax1=fig.add_subplot(1,1,1)
ax1.plot(x,y_linear,"bo",x,y_quadratic,"go",x,fn_linear(x),"b-",x,fn_quadratic(x),"g-",linewidth=2)
#这一行代码是为了画出图像bo是指画出蓝色的⚪,b-指画出蓝色的实线,剩余两个参数同理
ax1.xaxis.set_ticks_position("bottom")
ax1.yaxis.set_ticks_position("right")
ax1.set_title("Scatter Plots Regression Lines")
plt.xlabel("x")
plt.ylabel("f(x)")
plt.xlim(min(x)-1,max(x)+1)#规定图像x取值范围
plt.ylim(min(y_quadratic)-10,max(y_quadratic)+10)#规定图像y取值范围
plt.show()
箱线图
箱线图可以表示出数据的最小值、第一四分位数、中位数、第三四分位数和最大值。箱体
的下部和上部边缘线分别表示第一四分位数和第三四分位数,箱体中间的直线表示中位
数。箱体上下两端延伸出去的直线(whisker,亦称为“须”)表示非离群点的最小值和最
大值,在直线(须)之外的点表示离群点。
下面为箱线图代码实现的一个例子
import numpy as np
import matplotlib.pyplot as plt
plt.style.use('ggplot')
N = 500
normal = np.random.normal(loc=0.0, scale=1.0, size=N)
lognormal = np.random.lognormal(mean=0.0, sigma=1.0, size=N)
index_value = np.random.random_integers(low=0, high=N-1, size=N)
normal_sample = normal[index_value]
lognormal_sample = lognormal[index_value]
box_plot_data = [normal,normal_sample,lognormal,lognormal_sample]
fig = plt.figure()
ax1 = fig.add_subplot(1,1,1)
box_labels = ['normal','normal_sample','lognormal','lognormal_sample']
ax1.boxplot(box_plot_data, notch=False, sym='.', vert=True, whis=1.5,showmeans=True, labels=box_labels)
ax1.xaxis.set_ticks_position('bottom')
ax1.yaxis.set_ticks_position('left')
ax1.set_title('Box Plots: Resampling of Two Distributions')
ax1.set_xlabel('Distribution')
ax1.set_ylabel('Value')
plt.savefig('box_plot.png', dpi=400, bbox_inches='tight')
plt.show()
plt.boxplot(x, notch=None, sym=None, vert=None, whis=None, positions=None, widths=None, patch_artist=None, meanline=None, showmeans=None, showcaps=None, showbox=None, showfliers=None, boxprops=None, labels=None, flierprops=None, medianprops=None, meanprops=None, capprops=None, whiskerprops=None)
此为箱线图绘制函数的主要参数x:指定要绘制箱线图的数据;
notch:是否是凹口的形式展现箱线图,默认非凹口;
sym:指定异常点的形状,默认为+号显示;
vert:是否需要将箱线图垂直摆放,默认垂直摆放;
whis:指定上下须与上下四分位的距离,默认为1.5倍的四分位差;
positions:指定箱线图的位置,默认为[0,1,2…];
widths:指定箱线图的宽度,默认为0.5;
patch_artist:是否填充箱体的颜色;
meanline:是否用线的形式表示均值,默认用点来表示;
showmeans:是否显示均值,默认不显示;
showcaps:是否显示箱线图顶端和末端的两条线,默认显示;
showbox:是否显示箱线图的箱体,默认显示;
showfliers:是否显示异常值,默认显示;
boxprops:设置箱体的属性,如边框色,填充色等;
labels:为箱线图添加标签,类似于图例的作用;
filerprops:设置异常值的属性,如异常点的形状、大小、填充色等;
medianprops:设置中位数的属性,如线的类型、粗细等;
meanprops:设置均值的属性,如点的大小、颜色等;
capprops:设置箱线图顶端和末端线条的属性,如颜色、粗细等;
whiskerprops:设置须的属性,如颜色、粗细、线的类型等;
以上就是直方图、散点图和箱线图的绘制大体方法的总结,学习的参考书籍为《python数据分析基础》撰写此文期间csdn上的一些文章也在我学习matplotlib库的过程中起了指导作用。
博主整理与码字不易,留个????再走呗^ 3 ^
推荐阅读
-
python中matplotlib库的学习1
-
python中matplotlib库的学习2
-
Python中的Pandas、Matplotlib库详解
-
Python matplotlib模块的学习
-
python2与python3中关于对NaN类型数据的判断和转换
-
ORACLE中VARCHAR2类型的字段长度是按照byte来定义的-一个容易被忽略的问题 博客分类: 数据库 Oracle字符字节varchar2char
-
python2入门学习第三节基本的输入输出语句及格式化输出
-
泛型编程学习,编写一个类似STL库中的简易list的迭代器(iterator)
-
2进制,8进制,10进制,16进制在python中的表示方法和互相转换函数
-
2进制,8进制,10进制,16进制在python中的表示方法和互相转换函数