高考考试网
当前位置: 首页 高考资讯

pythonmatplotlib怎么画图(使用Python轻松做出各类图表)

时间:2023-06-08 作者: 小编 阅读量: 1 栏目名: 高考资讯

MATLAB可以做出各种函数以及数值分布图像非常的好用和方便。MATLAB虽然好用,但毕竟是收费软件,而且相比于MATLAB,很多人更喜欢Python的语法。第二种是作柱状图的叫做hist,第三种是作散点图的,叫做scatter,第四种是作饼状图的。我们查看图像,这个结果和我们的预期基本吻合。点状图第三种图像叫做散点图,它反应的是每个点的分布情况。而且3维的数据分布也不是很好观察。通过饼状图,我们可以很直观地了解到这点。

今天是数据处理专题的第9篇文章,在之前的8篇文章当中我们已经介绍完了pandas这个库的一些基本用法,我们先把一些冷门的高级用法放一放,先来给大家介绍一下另外一个很有用的数据分析库——matplotlib

matplotlib简介

如果你在大学里参加过数学建模竞赛或者是用过MATLAB的话,想必会对这一款软件中的画图功能印象深刻。MATLAB可以做出各种函数以及数值分布图像非常的好用和方便。如果你没用过呢也没关系,知道这么回事就好了。MATLAB虽然好用,但毕竟是收费软件,而且相比于MATLAB,很多人更喜欢Python的语法。

所以呢MATLAB就被惦记上了,后来有大神仿照MATLAB当中的画图工具,也在Python当中开发了一个类似的作图工具。这也就是我们今天这篇文章要讲的matplotlib,也是Python、数据分析以及机器学习领域当中使用最广泛的作图工具包,几乎没有之一。前段时间不是美国政府搞事情,导致MATLAB公司宣布对中国的几所高校禁止使用MATLAB嘛,有一些人就提出来说我们可以使用Python当中的一些开源工具代替,当然MATLAB当中还有很多其他厉害的功能,Python可能不一定能代替,但至少在作图这个领域是没问题的。

matplotlib 基本用法

matplotlib广泛流行的一个非常主要的原因就是它方便、好用,我们来看几个经典的例子就知道了,短短几行代码就可以作出质量非常高的图。

我们使用的是matplotlib这个包下的pyplot这个库,从名字上我们也看得出来它是Python库。如果你安装了Anaconda这样完整的Python包管理工具的话,那么这个包默认应该已经装好了。如果没有,可以使用pip安装一下,命令也非常简单。

pip install matplotlib

装好了包之后,我们通常的使用惯例是将它重命名成plt,所以如果你阅读一些源码以及其他大神的代码,作图的时候经常会出现plt.xxx,就是这么来的。

import matplotlib.pyplot as plt

plot当中有几种常用的作图工具,第一种是作折线图或者是曲线图的,叫做plot。第二种是作柱状图的叫做hist,第三种是作散点图的,叫做scatter,第四种是作饼状图的。除此之外还可以作一些三维的图像,但是一般日常当中使用得比较少,大部分是用来炫技的。

曲线图

plot其实是用来作曲线图的,采用的方法是描点呈现,它会将我们的数据点串联起来,成为一条光滑的曲线。当然,作折线、直线也都是可以的,最后成图的效果完全是由我们的数据决定的。

它的使用方法很简单,在最基本的用法当中,我们只需要传入两个list,分别代表x轴和y轴的值即可。比如我们要作出一个logistic的函数图像。我们可以这样:

x = np.linspace(-10, 10, 100)y = 1 / (1np.exp(-x))plt.plot(x, y)plt.show()

在上面的代码当中我们首先使用numpy当中的linspace函数生成了一个-10到10之间的numpy数组。这个数组当中有100个点,在-10到10之间均匀分布。我们对它计算对应的logistic函数的值,也就是y = 1/1e^(-x)。这个函数我想大家都应该很熟悉了,x是一个一百个点的list,对应的y也是一个一百个点的list。也就是说一个x对应一个y构成了一个点对,代表图中的一个坐标。

我们不需要做任何转化,只需要把这两个数组传入plt当中,它会自动替我们完成坐标的映射。最后呈现的效果如下。

我们可以看到作图的效果还是不错的,除了把图像完成的绘制出来之外,还替我们在坐标轴上画上了点位,方便我们查看数据。

直方图

hist可以用来绘制直方图,这也是我们非常常见的图像。在财经领域我们经常用直方图反应一个数据的走势,在数据分析和机器学习当中我们也经常用直方图来反应某一个特征或者是值的分布。

在直方图当中我们只需要传入一个数组,就是我们要求分布的数组,另外我们需要再输入一个参数bins,表示我们希望将数据分桶的数量。然后它会绘制出每个桶中数据数量的直方图,这样我们就可以很直观地看出分布来了。

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

这里我们调用numpy当中以正态分布概率随机的函数,得到的结果应该是正态分布的。

我们查看图像,这个结果和我们的预期基本吻合。

点状图

第三种图像叫做散点图,它反应的是每个点的分布情况。比如我们之前在介绍KNN和Kmeans模型的时候曾经都作过散点图,一个点代表一个样本,通过散点图我们观察的也是样本和数据分布的情况。但是和直方图相比它更加直观,我们能直接看到分布,而不是一个分布的统计结果。

但是它也有缺点,缺点就是我们只能观察二维平面当中的点的分布,毕竟超过3维的维度就没办法绘制了。而且3维的数据分布也不是很好观察。

同样散点图的绘制也很简单,我们只需要调用scatter函数传入x和y的数组即可。

x = np.random.rand(100)y = np.random.rand(100)plt.scatter(x, y)

这里我们的x和y都是随机分布,所以得到的结果是散乱没有规律的点。

饼状图

最后我们来看下饼状图,饼状图也很常用,虽然也是反映的数据分布,但是它更多是体现某一个值占的比例。通过饼状图,我们可以很直观地了解到这点。

我们可以传入一个list进入pie函数,plot会根据list当中值在总体的占比绘制饼状图。我们来看个很简单的例子:

a = np.array([0.5, 0.3, 0.2, 0.1, 0.8])plt.pie(a)

得到的结果如下:

和之前的结果相比饼状图稍稍不清晰一些,因为它虽然用不同颜色区分了不同的区域的,但是我们很难直观地看出来每一个区域分别代表什么。这个问题是可以解决的,我们可以通过传入一些参数和设定来让它展示更多的信息,让数据变得更加生动以及清晰。

今天的文章到这里就结束了,如果喜欢本文的话,请来一波素质三连,给我一点支持吧(关注、转发、点赞)。

- END -

本文始发于公众号TechFlow,求个关注

    推荐阅读
  • 武汉欢乐谷万圣节闭园(武汉欢乐谷万圣节开幕)

    楚天都市报10月12日讯 10月12日晚,武汉欢乐谷万圣节拉开帷幕,打造了七大全新鬼屋,将持续至11月18日。当晚,武汉欢乐谷热闹非凡,人山人海。万圣灯组美轮美奂,游客穿着万圣披风等变装服饰巡游。来自青山区的赵小姐和江先生,成为本次活动的揭幕者,他们七年来一直是欢乐谷万圣节的忠实玩家。景区负责人介绍,欢乐谷已经举办了7年万圣节活动,今年打造了七大全新鬼屋,还响应粉丝呼声推出了万圣网红打卡地、万圣畅玩卡等新玩法。

  • 怎么能够看出人身上有鬼(如何能够看出人身上有鬼)

    我们一起去了解并探讨一下这个问题吧!怎么能够看出人身上有鬼猫狗会冲着你一直狂叫,怎么也停不下来。总感觉时运不济,时常发生灾难和厄运。有鬼跟着的人总是会脾气暴躁无常,经常与人发生口角,甚至严重的还会出现破财流血的事件。经常思绪紊乱,胡言乱语,没办法控制自己。容易出现面色阴沉,眼白经常上吊,死气沉沉。如果长时间出现这种死人一样的面相,就要注意了。

  • 水浒传每章节概括(水浒传内容节选)

    鲁达救助金翠莲父女,打死郑屠。在桃花村为刘太公解除逼婚之忧。陆虞候买通防送公人董超薛霸,要于途中杀害林冲。两人要用水火棍打死林冲。梁中书与夫人商议收买十万贯礼物玩器,选人上京去庆贺蔡太师生日。都管,厢禁军回京谎报杨志勾结贼人,盗走珠宝,梁中书告知蔡京。蔡京命令府尹捉拿贼人。吴用施计,大败官兵,捉拿黄安,得了不少人马船只,获财物金银无数。宋江济阎婆之困,阎婆为谢宋江,把女儿婆惜与宋江作妻。

  • 猪猪侠主题曲这个年纪(就不是唱歌孩子听的)

    看着歌词,扪心自问:你有多久没“羡慕我自己”,多久没有“我要得第一”的冲劲了曾经的我们喜欢看猪猪侠、喜欢看奥特曼、喜欢看巴啦啦小魔仙、喜欢各种各样的英雄卡通它们无不正直与勇气,充满了爱与和平它们是英雄,而看它们的我,也是。

  • 浙江高级养老机构价格表(浙江发布养老机构护理分级标准)

    浙江高级养老机构价格表新华社杭州8月2日电针对分级护理无标准、护理质量难评价等问题,浙江省日前发布《养老机构护理分级与服务规范》省级地方标准。老年人入住养老机构后,每年将至少进行1次定期评估,老年人情况发生重大变化时应当及时进行再评,养老机构将根据老年人自理能力和病情的变化动态调整护理级别。

  • 怎么在html里插音乐(在html里插音乐的方法简述)

    首先要创建一个简单的网页,网页上只有一个DIV文本内容;,我来为大家讲解一下关于怎么在html里插音乐?跟着小编一起来看一看吧!

  • 斗罗大陆史莱克七怪(斗罗大陆史莱克七怪的排名)

    那可能你没有完全了解奥斯卡,他其实是天赋最高的史莱克七怪。他是食物系武魂香肠,虽然不着调的性格,但是他的辅助能力完全不输七宝琉璃塔。在史莱克七怪他是领袖是核心,在地狱路他果敢充满智慧,在月轩他学习超快他人眼中的同学,这就是唐三的天赋。戴沐白和朱竹清:戴沐白的天赋和朱竹清的天赋在史莱克七怪里面确实不是很出众,但是两人能施展武魂融合剂而让实力大增。

  • 里海是封闭之海吗(里海到底是海还是湖)

    苏联解体前,里海是苏联和伊朗的内湖,里海的地位已在1921年和1940年两国签订的条约中作了明确规定,只有挂苏联和伊朗国旗的船只才能在里海航行。于是到了2018年,里海沿岸五国正式签署《里海法律地位公约》,为里海沿岸五国今后分割里海海底石油和天然气资源以及在各领域加强合作奠定法律基础。

  • 皇室战争双王子卡组(皇室战争官方认证经典卡组)

    其实说到伤害翻倍,还有一类卡牌的特点就是突进,实战效果是一段距离内突然发起进攻,比较常见的就是幻影刺客和超级骑士。当然,一些建筑也可以召唤卡牌,但建筑本身会自爆,没卡牌那么持久。最后要说的这类卡牌,它们的特点是亡语效果。

  • 篮球实用技巧nba(如何让你从不懂NBA的篮球小白)

    首先我们应该明白一个问题就是:何为NBA呢?NBA也是北美四大职业体育联盟之一,但是在受欢迎程度已经流量上面它远不及NFL和MLB,排名位列第三位。目前为止NBA由三十支球队组成,其中美国本土29支,加拿大一支,吸引了全世界各国最顶级、最优秀球员。夏季联赛一般开始于7—8月份,主要是为了锻炼球队的新秀以及发展联盟球员,使其可以逐渐适应NBA级别的强度,正式的NBA球员是不会参加比赛的。