matplotlib柱状图上方显示数据_Python数据分析matplotlib可视化之绘图!

Matplotlib是一个基于python的2D画图库,能够用python脚本方便的画出折线图,直方图,功率谱图,散点图等常用图表,而且语法简单。

Python中通过matplotlib模块的pyplot子库来完成绘图。Matplotlib可用于创建高质量的图表和图形,也可以用于绘制和可视化结果。matplotlib是Python优秀的数据可视化第三方库,matplotlb.pyplot是绘制种类可视化图形的命令子库,相当于快捷方式 import matplotlib.pyplot as plt.

  1. 线形图:

线性图是最基本的图表类型,常用于绘制连续的数据。通过绘制线形图,可以表现出数据的一种趋势变化。

Matplotlib的plot(X,Y)用来绘制线形图,在参数中传入X和Y的坐标即可。其中,X和Y轴坐标的数据格式可以是列表、数组和Series.

例1:坐标数据格式为series

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
data={'name':['Tom','Peter','Lucy','Max'],'sex':['female','female','male','male'],'math':[78,79,83,92],'city':['北京','上海','广州','北京']}
df=pd.DataFrame(data)
print(df)#DataFrame数据的行索引作为X轴,math列索引作为Y轴
plt.plot(df.index,df['math'],color='red',linestyle='-',linewidth=3,marker='D')#通过plot函数的color参数可以指定线条的颜色,

linestyle参数可以指定线条的形状,

linewidth参数可指定线条的宽度,

marker参数可对坐标点进行标记(默认情况下,坐标点是没有标记的),

结果:name sex math city #创建一个DataFrame数据
0 Tom female 78 北京
1 Peter female 79 上海
2 Lucy male 83 广州
3 Max male 92 北京

绘制的线性图:

!]( http://upload-images.jianshu.io/upload_images/4809664-7ca76b8569cdce1b?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240 )

注意: 颜色设置要放在线条和点的样式的前面 ,颜色、线条和点的样式可以放置于格式字符串。

如:plt.plot(df.index,df['math'],'co-')

运行结果如下:

56592b7a312fabae053b5989ede9f67b.png


image

2. 柱状图

2.1 绘制柱状图主要是使用matplotlib的 bar函数 :

bar函数的color参数可以设置柱状图的填充颜色,

alpha参数可以设置透明度,

例如:

import matplotlib.pyplot as plt
data=[23,85,72,43,52]
plt.bar([1,2,3,4,5],data,color='royalblue',alpha=0.7)

运行结果:

363368765b5b8fe16c6ef0c28279b407.png


image

bottom参数用于设置柱状图的高度,以此绘制堆积柱状图;

width参数 用于设置柱状图的宽度, 以此可以绘制并列柱状图

grid函数用于绘制格网,通过对参数的个性化设置,可以绘制出个性的格网

例如:

import numpy as npimport matplotlib.pyplot as pltdata1=[23,85,72,43,52]data2=[42,35,21,16,9]width=0.3plt.bar(np.arange(len(data1)),data1,color='royalblue',alpha=0.7,width=width)plt.bar(np.arange(len(data2))+width,data2,color='green',alpha=0.7,width=width)plt.grid(color='black',linstyle='--',linewidth=3,axis='y',alpha=0.6)

运行结果:

48421e6f93c31d3f0111309ba50f5258.png


image

Bar函数的通过barh函数可以绘制水平柱状图

import numpy as npimport matplotlib.pyplot as pltdata1=[23,85,72,43,52]plt.barh(np.arange(len(data1)),data1,color='green',alpha=0.5)

如图所示:

98e46b18736af420fefcdeda1b40554b.png


image

2.2 刻度与标签:

现实中的柱状图的X轴是有刻度标签的,上述实例中未设置。在matplotlib中,

通过 xticks函数 设置图标的X轴的刻度和刻度标签, yticks函数 设置y轴的刻度和标签。

通过xlabel 和 ylabel 方法给X轴和Y轴添加标签,

通过title方法为图表添加标题

例如:

import numpy as npimport matplotlib.pyplot as pltdata1=[23,85,72,43,52]labels=['A','B','C','D','E']plt.xticks(range(len(data1)),labels) #设置刻度和标签plt.xlabel('Class') #plt.xlabel、ylabel、title方法分别给X轴和Y轴,图标题添加标签。plt.ylabel('Amounts')plt.title('Example')#plt.bar(range(len(data1)),data)plt.bar(np.arange(len(data1)),data1,color='royalblue',alpha=0.7)plt.grid(color='black',linstyle='--',linewidth=3,axis='y',alpha=0.6)

运行结果:

2.3 图例:

51ad1fda5f20b78d8cc51b1a551cf406.png


image

图例是标识图表元素的重要工具, 在bar函数中传入label参数表示图例名称,通过legend函数即可绘制出图例。

data1=[23,85,72,43,52]
data2=[42,35,21,16,9]
width=0.3
plt.bar(np.arange(len(data1)),data1,width=width,label='one')
plt.bar(np.arange(len(data2))+width,data2,width=width,label='two')
plt.legend()

结果图:

0c6ee2c6a27a56530bfde8a9cdba619c.png


image

2.4 文本注解:

例如:在柱状图中加入文本数字,可以很清楚的知道每个类别的数量。通过text函数可以在指定的坐标(x,y)上加入文本注释

data=[23,85,72,43,52]
labels=['A','B','C','D','E']
plt.xticks(range(len(data)),labels) #设置刻度和标签
plt.xlabel('Class') 
plt.ylabel('Amounts')
plt.title('Example')
plt.bar(range(len(data)),data)
for x,y in zip(range(len(data)),data):
plt.text(x,y,y,ha='center',va='bottom') #文本注解 # 第一个参数是x轴坐标# 第二个参数是y轴坐标# 第三个参数是要显式的内容

7bf8000f087b229f323f91f89a16f90d.png


image

3.散点图:

Matpltlib中 scatter函数可以用来绘制散点图,传入X和Y轴坐标。Scatter(X,Y)

利用Numpy创建一组随机数

import numpy as np
import matplotlib.pyplot as plt
X=np.random.randn(100)
Y=np.random.randn(100)
plt.scatter(X,Y,color='red',marker='D')

散点图:

af1c13d632f473968f260ca398d18315.png


image

4. 直方图

matplotlib的 hist()函数 用来绘制直方图。

直方图与条形图的区别:

直方图是用面积表示各频数的多少,矩形的高度表示每一组的频数或频率,宽度则表示各组的组距,因此其宽度与高度均有意义;

条形图(柱状图)是用条形的长度表示各类频数的多少,其宽度是固定的。

由于分组数据具有连续性,直方图的各矩形通常是连续排列,而条形图是分开排列;条形图主要是用于展示分类数据,而直方图则主要用于展示数据型数据。

x=np.random.normal(size=100)
plt.hist(x,bins=30)

8f6d69fc47efe900705cca7bbac921ed.png


image

5. 自定义设置

Matplotlib的图像位于Figure对象中,实际上就是创建了一个空的图像窗口。可通过figure函数可以创建一个新的Figure,用于绘制图表

fig=plt.figure(figsize=(10,6)) #figsize参数可以设置图表(整个图)的长宽比

ax1=fig.add_subplot(2,2,1) #不能通过空figure绘图,必须用add_subplot()创建一个或者多个子subplot绘图区才能绘图

意思是:绘制2*2两行两列共4个子subplot图像

ax2=fig.add_subplot(2,2,2) # 在创建Figure对象过程中,通过add_subplot函数创建子图,用于绘制图形

ax3=fig.add_subplot(2,2,3)

years=[1950,1960,1970,1980,1990,2000,2010]

gdp=[300.2,543.3,1075.9,2862.5,5979.6,10289.7,14958.3]

ax1.scatter(years,gdp) #选用不同的ax变量,则可以在对应的subplot子图中绘图(散点图、线形图、柱状图)

ax2.plot(years,gdp)

ax3.bar(years,gdp)

4d548c9044a35c985df10e174988b57b.png


image

plt.subplots可以轻松的创建子图,而axes的索引类型类似于二维数组,这样就可以对指定的子图进行绘制。Subplot函数中有3个参数:垂直绘图的数量、水平绘图的数量以及表示绘图位置的索引(基于行进行计算)

fig,axes=plt.subplots(2,2,figsize=(10,6)) 
axes[1,0].plot(years,gdp)
axes[0,0].scatter(years,gdp)
axes[0,1].bar(years,gdp)
axes[1,1].hist(years,gdp)

ef05a13e0f90eb3b57d7a92f5991f3e2.png


image

注意:当没有设置figsize时,创建多子图会显得拥挤。通过 plt..subplot_adjust方法可以设置子图的间距修改子图之间的间距(增加额外的空间以调整两个子图之间的距离)

subplots__adjust(left=None,bottom=None,right=None,top=None,wspace=None,hspace=None) ,其中前4个参数用于设置subplot子图的外围边距,wspace和hapace参数设置用于设置subplot子图间的边距。

fig,axes=plt.subplots(2,2) #未设置figsize时,默认情况下,各sudplot子图间都会留有一定的间距。

0616e71e1d2138de387959edbc033d27.png


image

years=[1950,1960,1970,1980,1990,2000,2010]
gdp=[300.2,543.3,1075.9,2862.5,5979.6,10289.7,14958.3]
fig,axes=plt.subplots(2,2)
plt.subplots_adjust(wspace=0.3,hspace=0.3)
axes[1,0].plot(years,gdp)
axes[0,0].scatter(years,gdp)
axes[0,1].bar(years,gdp)
axes[1,1].hist(years,gdp)

e18ba054e5f236e187a74214ae49da51.png


image

6. 样式与字体:

Matplotlib自带了一些样式供用户使用,如 常用的ggplot样式,通过 plt.style.use('ggplot') 函数即可调用该样式绘图。 **

Matplotlib默认为英文字体,如果绘制中出现汉字就会乱码,因此需要指定matplotlib的默认字体,这样就可以解决乱码的问题,

plt.rcParams['font.sans-serif']=['simhei'] #指定默认字体

plt.rcParams['axes.unicode_minus']=False #解决保存图像时负号‘-’显示为方块的问题

228d5c78a1acbf3fe3eb86e6ed28700e.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/499100.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

应付账款账龄分析模板_企业财务报表分析论文应如何着手?

首先是企业的选择,最好选取上市公司进行分析,上市公司的财务数据比较透明,完全可以从新浪财经、中国证券网等平台获得详尽的报表数据资料,一般选取近三到五个年度。有了数据就可以着手分析了,我们可以从下面几个方法入…

dbeaver导入excel文件_PyQT5练习:制作Excel文件导入MySQL窗口

本文环境配置:系统>windows10:64位工具>PyCharm:2018.3.1语言>Python:3.7.1第三方库PyQT5:5.11.3pyqt5-tools:5.11.3.1.4PyMySQL:0.9.3openpyxl:2.5.12练手:制作…

编程中的蛇形填空问题_PCB—蛇形线的作用,这次真的是把你搞懂了

经常能看到论坛里有人在问蛇形线的问题。平时我们能看到蛇形线的地方大都是一些高速高密度板,好像带有蛇形线的板子就更高级,会画蛇形线就是高手了。网上关于蛇形线的文章也有很多,总感觉有些帖子的内容会误导新手,给人们带来困扰…

html5控制gif速度,gif加速软件 教你加快GIF图片的播放速度

一位狸友在编辑GIF动态图片时碰到了一个问题,就是不知怎么把GIF动画的播放速度加快(或减慢)。如果你也正巧碰到此类疑问或想知道GIF加速的方法,可以接着往下看哦。其实先理解了GIF动画的原理,并找对合适的gif编辑软件,解决这问题并…

html文本弹性,HTML5 很有趣的文本蹦床/弹性弯曲动效

CSS语言:CSSSCSS确定import url(http://fonts.googleapis.com/css?familyOpenSans:400,800,300);html,body {height: 100%;}body {display: -webkit-box;display: -webkit-flex;display: -ms-flexbox;display: flex;-webkit-box-pack: center;-webkit-justify-cont…

android studio mvvm模板生成_使用Vue快速生成shape背景图

写在前面在日常的Android开发之中,我们通常都会根据UI图去手动创建shape或者selector背景图,虽说创建起来很简单,但是未免也会感到繁琐,因此也研究了一些这方面的知识,包括自定义shapedrawable、dataBinding&#xff0…

python 句子中没有中文_人生感悟经典句子,生活中可以没有诗歌,但不能没有诗意...

也曾有过一些热忱和勇气,为了自以为的命中注定颠沛流离,本想有一段花好月圆,却未曾想过就此天各一方。不是不爱,不是不会爱,只是少了坚持走下去的勇气。想必这是很多人的心声。错过抑或过错,都是爱情里常有…

计算机用户删除 cmd,命令提示符下怎么新建用户和删除用户

在日常管理电脑中的用户时,我们都是通过控制面板和计算机管理的用户帐户来管理进行用户添加和用户删除的,有一种更快捷的方法就是使用命令对用户帐户进行管理,NET USER 用于创建和修改计算机上的用户帐户,如:新建&…

图像迁移风格保存模型_图像风格迁移也有框架了:使用Python编写,与PyTorch完美兼容,外行也能用...

原标题:图像风格迁移也有框架了:使用Python编写,与PyTorch完美兼容,外行也能用选自Medium作者:Philip Meier 机器之心编译 编辑:陈萍 易于使用的神经风格迁移框架 pystiche。 将内容图片与艺术风格图片进行…

vivo设置全屏后状态栏黑色_vivo手机用2年内存占满,是这3个功能捣乱,一键按下全部释放...

vivo手机用2年内存占满,是这3个功能"捣乱",一键按下全部释放经常使用手机如果没有清理习惯,那么应用一多,产生的文件就会变多,这样手机就会没用2年就出现卡顿的现象。今天来教大家怎样一键释放vivo手机内存。…

学计算机之路写一篇作文,我的学习之路作文(2篇)

我的学习之路作文(2篇)在我们平凡的日常里,大家对作文都再熟悉不过了吧,作文根据写作时限的不同可以分为限时作文和非限时作文。那要怎么写好作文呢?以下是小编整理的我的学习之路作文,仅供参考,欢迎大家阅读。我的学习…

js生日计算年龄_你知道用EXCEL可以从身份证中提取生日、性别、年龄、生肖吗?...

首先我们先了解下中国身份证号码的编排规则,中国公民身份证共18位,1~6位为省份地区信息码;7~14位为出生日期码;15~16位数字表示所在地的派出所的代码;第17位数字表示性别(奇数表示男性,偶数表示女性)&#…

docker 修改阿里镜像源_国内部署kubernetes集群的最佳实践(一)—官方教程+阿里镜像源

项目github地址:https://github.com/usualheart/install_k8s_official在国内环境下,借助阿里镜像源,按照官方的指导,使用脚本一步一步安装kubernetes。参考教程【官方】在ubuntu上安装dockerhttps://docs.docker.com/engine/insta…

html 指定对象为块元素,html内联(行内)元素、块级(块状)元素和行内块元素分类...

HTML可以将元素分类方式分为内联(行内)元素、块级(块状)元素和行内块元素三种。注:HTML是标签语言,那么既然是标签,就可以自己定义一些自己元素(如自定义的元素等),自定义元素浏览器默认解析为内联元素,为防止不同浏览…

python中ht表示什么_如何看待某国内大公司Python面试题,有关dict中初始化为固定值?...

职业发展Python如何看待某国内大公司Python面试题,有关dict中初始化为固定值?阅读下面的代码,写出A0,A1至A6的最终值。A0 dict(zip((a,b,c,d,e),(1,2,3,4,5)))A1 range(10)A2 [i for i in A1 if i in A0]A3 [A0[s] for s in A…

defaultdict python_在python中怎样使用defaultdict-百度经验

defaultdict是collection模块下面的一个类,用于在执行字典的时候,遇到没有设置的属性的时候,可以设置默认的值,那么在python中怎样使用defaultdict呢?下面小编就带大家来看看详细的教程!工具/原料 python版…

微型计算机除具有计算机的一般特点外,10秋学期《计算机应用基础》第1次在线作业答案免费6/15...

10秋学期《计算机应用基础》第1次在线作业答案免费6/152011-02-17 00:02:57266有学员问关于10秋学期《计算机应用基础》第1次在线作业答案免费6/15的题目的参考答案和解析,具体如下:2010秋学期《计算机应用基础》第一次在线作业试卷总分:100 …

设计几何体素描_石膏几何体素描教案

1石膏几何体素描教案教学目的:1、知识能力目标:通过教学使学生懂得写实素描、石膏几何体写生的意义,为上好其他绘画专业课奠定造型基础。2、方法与过程目标:掌握写生的观察方法、透视规律、作画步骤。3、情感态度价值目标&#xf…

java面试换背景颜色_三年经验Java程序员记一次失败的面试分享:鹅厂三面让我体无完肤!...

欢迎关注专栏:里面定期分享Java架构技术知识点及解析,还会不断更新的BATJ面试专题,欢迎大家前来探讨交流,如有好的文章也欢迎投稿。程序员圈内那点事​zhuanlan.zhihu.com经过半年的沉淀,加上对MySQL,redis…

福昕风腾pdf导出为html,福昕风腾PDF套件快速指引.pdf

福昕风腾PDF套件快速指引福昕风腾PDF 套件 快速指南1福昕风腾PDF 套件 快速指南福昕风腾PDF 套件 快速指南本文简要介绍了福昕风腾 PDF 套件的主要功能。如需详细的操作帮助,请参看我们的用户手册。使用入门安装福昕风腾PDF 套件(福昕风腾PDF 电子文档处理套件)系统…