100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > matplotlib柱状图上方显示数据_Python基础数据可视化

matplotlib柱状图上方显示数据_Python基础数据可视化

时间:2019-12-16 18:04:29

相关推荐

matplotlib柱状图上方显示数据_Python基础数据可视化

数据可视化是数据分析中最重要的工作之一。在数据探索阶段,可视化有助于我们了解数据的基本分布与简单规律;在数据分析结果阶段,可视化呈现的结果更加直观、醒目。按照数据之间的关系,我们可以把可视化视图分为四类:比较、联系、构成和分布。数据之间表现的这四种关系主要特点如下:

比较:比较数据间各类别的关系,或者是它们随时间的变化趋势,比如折线图;

联系:查看两个或两个以上变量之间的关系,比如散点图;

构成:每个部分占整体的百分比,或者是随时间的百分比变化,比如饼图;

分布:关注单个变量,或者多个变量的分布情况,比如直方图与散点图。

在Python中,常用的可视化库有:

matplotlib

seaborn

seaborn 跟 matplotlib 最大的区别就是它的默认绘图风格和色彩搭配都更具有现代美感,其实是在 matplotlib 的基础上进行了更高级的 API 封装,能用更少的代码去调用 matplotlib 的方法,从而使得作图更加容易,在大多数情况下使用 seaborn 就能做出很具有吸引力的图,而使用 matplotlib 就能制作具有更多特色的图。应该把 seaborn 视为matplotlib的补充,而不是替代。matplotlib 中最基础的模块是 pyplot ,下面从最简单的折线图开始讲解,主要操作流程包括:

创建图像对象

使用figure函数来创建

输入数据参数

导入数据

在窗口里面绘图与标记内容

线条粗细、颜色、形状、横坐标纵坐标等等

>>> import matplotlib.pyplot as plt # 载入matplotlib的子模块pyplot>>> fig = plt.figure(figsize=(10,8)) # 指定图像大小与纵横比

其中 figsize=(10,8) 是用来指定图像的大小与纵横比,下面以折线图为例,来介绍 matplotlib 中常用的命令与步骤

>>> input_value = [1,2,3,4,5] # 输入值>>> squares = [1,4,9,16,25] # 输出值>>> plt.plot(input_value,squares,linewidth=5) # 设置线条的粗细>>>plt.title("SquareNumbers",fontsize=24) #给图表指定标题>>>plt.xlabel("Value",fontsize=14) #为x轴设置标题>>>plt.ylabel("Squareofvalue",fontsize=14)#为y轴设置标题>>>plt.tick_params(axis='both',labelsize=12)#设置刻度标记大小>>> plt.show()# 打开 matplotlib 查看器

最终得到的图像如下所示。注意,pyplot模块的plot函数可以接收其他参数,如线条粗细、颜色、线条形状等。plot 函数里面常用的关键字参数如下:

plt.plot(x,y,color='green',marker='o',linestyle='dashed',linewidth=1,markersize=6)#(x,y):横坐标与纵坐标的w位置# color:颜色参数# marker:数据点形状参数# linestyle:线型参数,包括:虚线、实现或点线# linewidth:线条粗细参数# markersize:数据点大小参数

如果需要在一个窗口同时画几个不同的子图,可以利用Matplotlib 的如下命令来实现:

>>> import numpy as np>>> x = np.random.randint(1,10,8) # 从均匀分布随机抽取8个数据>>> label = list('abcdefgh') # 对上述8个数据标记字母>>> plt.subplot(211) # 指定2行1列第1个子图0x09705290>>>> plt.bar(label,x) # 在指定的子图上绘制垂直柱状图8 artists>>>> plt.subplot(212) # 指定2行1列第2个子图0x0B8140F0>>>>plt.barh(label,x)#在指定的子图上绘制水平柱状图8 artists>>>> plt.show()

注意,垂直柱状图用plt.bar() ,水平柱状图用plt.barh() ,图像如下所示:利用pyplot 绘制直方图的命令格式如下:

plt.hist(data,bins=40,normed=0,facecolor="blue",edgecolor="black",alpha=0.7)#data必选参数,绘图数据#bins直方图的长条形数目,可选项,默认为0#normed直方图向量是否进行归一化,默认为0代表不归一化,显示频数#normed=11表示归一化,显示频率#facecolor长条形的颜色#edgecolor 长条形边框的颜色# alpha透明度

下面以具体的实例来说明如何绘制直方图:

>>> import matplotlib>>> import numpy as np>>> # 设置matplotlib 正常显示中文和负号>>> matplotlib.rcParams['font.sans-serif']=['SimHei'] # 用黑体显示中文>>> matplotlib.rcParams['axes.unicode_minus']=False # 正常显示负号>>>data=np.random.randn(10000)#随机生成10000个服从正态分布的数据>>> len(data)10000>>>plt.hist(data,bins=40,normed=0,facecolor="blue",edgecolor="black",alpha=0.7)>>>plt.xlabel("区间")#显示横轴标签>>>plt.ylabel("频数/频率")#显示纵轴标签>>>plt.title("频数/频率分布直方图")#显示图标题>>> plt.show() # 显示图像

箱形图boxplot以一种相对稳定的方式描述数据的离散分布情况,箱形图最大的有点就是不受异常值的影响。从箱形图中可以清晰的看出异常值是否存在,中位数与平均值的差异。在Python中画箱形图,以 matplotlib 结合 seaborn 的方式使得编写代码简洁、绘图更有美感。

>>> import matplotlib.pyplot as plt>>>importseabornassns>>> iris = sns.load_dataset("iris")>>>sns.boxplot(x=iris['species'],y=iris['sepal_width'])>>>plt.show()#显示图像

图像如下:热点图 heatmap 作为一种密度图,热力图一般使用具备显著颜色差异的方式来呈现数据效果,热力图中亮色一般代表时间发生频率较高或事物分布密度较大,暗色则反之。

importmatplotlib.pyplotaspltimport seaborn as sns#Loadtheexampleflightsdatasetandconverttolong-formflights_long = sns.load_dataset("flights")flights = flights_long.pivot("month", "year", "passengers")#Drawaheatmapwiththenumericvaluesineachcellf, ax = plt.subplots(figsize=(9, 6))sns.heatmap(flights, annot=True, fmt="d", linewidths=.5, ax=ax)

Pairplot 主要展现的是变量两两之间的关系(线性或非线性,有无明显的相关关系)

import matplotlib.pyplot as pltimport seaborn as snsiris = sns.load_dataset("iris")sns.pairplot(iris)

对角线上是各个属性的直方图(分布图),而非对角线上是两个不同属性之间的相关图,从图中我们发现,花瓣的长度和宽度之间以及萼片的长短和花瓣的长、宽之间具有比较明显的相关关系。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。