范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Python数据可视化利器Matplotlib从入门到高级3

  Matplotlib的本质是基于对象的,我们从下面这幅图开始介绍Matplotlib的各种重要的对象。
  Matplotlib 绘图的主要构成部分
  这张图当然可以使用Matplotlib代码绘制出来,我将在文章的结尾处放出绘图的源代码,以便大家对照源代码理解绘图中的各种对象。大家也可以自己去官方文档中搜索关键词"Anatomy"下载。当然,这张图的具体绘制方法不是这里的重点。我们关注的是这张绘图中的各个对象——图中用蓝色字体和黑色圆圈标出来的部分。下面为大家一一介绍:Figure
  Figure即图形,指的是整个绘图,大家能看到的所有部分都属于Figure。创建新图形最简单的方法是使用pyplot:fig = plt.figure()  # 创建一个空图 fig, ax = plt.subplots()  # 创建带有一个 Axes 的图形 fig, axs = plt.subplots(2, 2)  # 创建一个带有 2x2网格 Axes的图形
  如果增加一句 plt.show() (大家别忘了导入模块)就可以显示出这三张图形来。其中第一句代码生成的图片就是一张白板,什么内容都没有;第二句代码生成的是一个带有坐标系的空图;第三句代码则会生成一个呈网格状分布的由四个坐标系组成的空图。下面附上的是第三张图。
  2 2网格的Axes组成的空绘图
  一般情况下,我们使用第二句或第三句在实例化一个Figure对象的同时创建一个Axes。但也可以使用第一句创建一个空的Figure,然后使用类似于下面的代码手动生成Axes(Axes到底是什么?相信你一定会问):ax = fig.subplots()Axes
  我们在上一段已经提到了Axes,但没有深入解释它。需要特别注意的是这里的Axes并不是Axis的复数形式(吐槽一下使用Axes名称的Matplotlib设计师),而是Figure上一个由两个(x轴、y轴)坐标轴(包括坐标轴在内)围成的可供绘制数据的区域,我们可以将它称为"轴域"。一张图就是一个Figure,但一个Figure可以有一个或多个轴域,就像上面附的图上就有四个轴域。每个Axes都有一个标题(通过 set_title()设置,默认为None)、一个x轴标签(通过set_xlabel()设置)以及一个y轴标签(通过set_xlabel()设置)。
  Axes类及其成员函数是使用面向对象接口的主要入口点,Matplotlib在其上定义了大多数绘图方法(例如我们前一篇介绍Matplotlib面向对象的代码风格时用到的 ax.plot()方法)。
  注意:如果是3D图的话,那么每个轴域则是由三个坐标系围成的绘图区域构成。Axis
  Axis就是坐标轴。在Matplotlib的2D绘图中,每个Axes都有两个平行的同类型轴(比如上下两个水平的x轴,左右两个垂直的y轴,极坐标等非常规图除外),它们刚好围成一个矩形区域。默认情况下,左边的y轴和下边的x轴都带有数字(其实是个字符串)刻度标签(tick label)和刻度(tick);而上边的x轴和右边的y轴则只有一根光凸凸的线。这根光凸凸的线就是所谓的"Spines",轴脊线。刻度标签和刻度都有主标签/刻度(Major)和次标签/刻度(Minor)之分,通常主标签/刻度要突出一些。组成Axis的这些刻度(实际上是Line2D对象)和标签(实际上是Text对象)本身也是对象,也可以进行单独的设置。Artist
  直译的话,可以叫作艺术家。Matplotlib把画布(canvas,这是一个底层概念,涉及到它的地方不多)想像成一个舞台,所有在这个舞台上展示自我的都被形象的称作艺术家Artist,比如文本对象Text、2D曲线对象Line2D(图上用蓝色"Line"文字示出的就是两个2D曲线对象)等。Artist的范围非常广泛,甚至包括我们前面提到的三种对象(Figure、Axes、Axis)。后面专门讲一讲它。
  现在组成图中还有三个对象没介绍,它们分别是:Legend图例、Grid网格线和Markers点标记。网格线比较简单,不单独说了;点标记的边线和中间区域可以使用不同的颜色;Legend的设置比较丰富,后面争取专门介绍。小结
  Artist对象包括了所有在我们的绘图舞台上展示各种造型的所有对象。Figure就是整个图形,它包括一个或多个Axes对象。Axes对象则包括多个Axis对象,而我们在绘图过程中打交道最多的可能就是Axes对象。在后面的介绍中我们将会了解到Figure、Axes和Axis实际上都是一类容器对象。
  Matplotlib绘图中的最主要对象就是这些。那么今天的内容就到这里为止,最后附上文章开头的那个组成图的绘图代码:import numpy as np import matplotlib.pyplot as plt from matplotlib.ticker import AutoMinorLocator, MultipleLocator, FuncFormatter  np.random.seed(19680801)  X = np.linspace(0.5, 3.5, 100) Y1 = 3+np.cos(X) Y2 = 1+np.cos(1+X/0.75)/2 Y3 = np.random.uniform(Y1, Y2, len(X))  fig = plt.figure(figsize=(8, 8)) ax = fig.add_subplot(1, 1, 1, aspect=1)   def minor_tick(x, pos):     if not x % 1.0:         return ""     return "%.2f" % x  ax.xaxis.set_major_locator(MultipleLocator(1.000)) ax.xaxis.set_minor_locator(AutoMinorLocator(4)) ax.yaxis.set_major_locator(MultipleLocator(1.000)) ax.yaxis.set_minor_locator(AutoMinorLocator(4)) ax.xaxis.set_minor_formatter(FuncFormatter(minor_tick))  ax.set_xlim(0, 4) ax.set_ylim(0, 4)  ax.tick_params(which="major", width=1.0) ax.tick_params(which="major", length=10) ax.tick_params(which="minor", width=1.0, labelsize=10) ax.tick_params(which="minor", length=5, labelsize=10, labelcolor="0.25")  ax.grid(linestyle="--", linewidth=0.5, color=".25", zorder=-10)  ax.plot(X, Y1, c=(0.25, 0.25, 1.00), lw=2, label="Blue signal", zorder=10) ax.plot(X, Y2, c=(1.00, 0.25, 0.25), lw=2, label="Red signal") ax.plot(X, Y3, linewidth=0,         marker="o", markerfacecolor="w", markeredgecolor="k")  ax.set_title("Anatomy of a figure", fontsize=20, verticalalignment="bottom") ax.set_xlabel("X axis label") ax.set_ylabel("Y axis label")  ax.legend(loc=1)   def circle(x, y, radius=0.15):     from matplotlib.patches import Circle     from matplotlib.patheffects import withStroke     circle = Circle((x, y), radius, clip_on=False, zorder=10, linewidth=1,                     edgecolor="black", facecolor=(0, 0, 0, .0125),                     path_effects=[withStroke(linewidth=5, foreground="w")])     ax.add_artist(circle)   def text(x, y, text):     ax.text(x, y, text, backgroundcolor="white",             ha="center", va="top", weight="bold", color="blue")   # Minor tick circle(0.50, -0.10) text(0.50, -0.32, "Minor tick label")  # Major tick circle(-0.03, 4.00) text(0.03, 3.80, "Major tick")  # Minor tick circle(0.00, 3.50) text(0.00, 3.30, "Minor tick")  # Major tick label circle(-0.15, 3.00) text(-0.15, 2.80, "Major tick label")  # X Label circle(1.80, -0.27) text(1.80, -0.45, "X axis label")  # Y Label circle(-0.27, 1.80) text(-0.27, 1.6, "Y axis label")  # Title circle(1.60, 4.13) text(1.60, 3.93, "Title")  # Blue plot circle(1.75, 2.80) text(1.75, 2.60, "Line (line plot)")  # Red plot circle(1.20, 0.60) text(1.20, 0.40, "Line (line plot)")  # Scatter plot circle(3.20, 1.75) text(3.20, 1.55, "Markers (scatter plot)")  # Grid circle(3.00, 3.00) text(3.00, 2.80, "Grid")  # Legend circle(3.70, 3.80) text(3.70, 3.60, "Legend")  # Axes circle(0.5, 0.5) text(0.5, 0.3, "Axes")  # Figure circle(-0.3, 0.65) text(-0.3, 0.45, "Figure")  color = "blue" ax.annotate("Spines", xy=(4.0, 0.35), xycoords="data",             xytext=(3.3, 0.5), textcoords="data",             weight="bold", color=color,             arrowprops=dict(arrowstyle="->",                             connectionstyle="arc3",                             color=color))  ax.annotate("", xy=(3.15, 0.0), xycoords="data",             xytext=(3.45, 0.45), textcoords="data",             weight="bold", color=color,             arrowprops=dict(arrowstyle="->",                             connectionstyle="arc3",                             color=color))  ax.text(4.0, -0.4, "Made with http://matplotlib.org",         fontsize=10, ha="right", color=".5") plt.show()

快递上门额外收费?这种情况要注意了快递费是快递费,上门费是上门费,有些情况不一样?消费级互联网阶段的繁荣,很多人是参与者经历者除了披着互联网科技外衣肆虐到令人惊诧的互联网金融。还有搭乘互联网电商东风起飞的,快递物流小米13Pro搭载IMX989一英寸主摄,影像体验或不输上一代Ultra版本小米创办人,董事长兼CEO雷军今日上午公布了小米13Pro的影像配置,称该机为Pro之名,Ultra之魂。影像配置方面,小米13Pro搭载与索尼联合研发的IMX989一英寸主摄,与明明是千元机却过分精致,真我10Pro换了种卷法细心的人应该都发现了,天玑1080骁龙782G天玑8200都在挤牙膏,简单超个频改个名字就当成新品来卖。芯片厂商之所以摆烂,和新工艺成本上涨有一定关系,但更重要的是手机端的应用生态不吹不黑,vivoX90Pro使用了5天,说一下使用感受之所以苹果手机被许多人吹捧,绕不开苹果手机的流畅体验以及使用寿命,这要归功于苹果A系列芯片的强悍性能,以及长期更新的流畅的iOS系统软件,还有苹果高人一等的影像算法。说到影像,vi一直堆料的国产手机却比不过摆烂的苹果,你知道原因吗时至2022年,手机圈都逃不掉一个趋势,那就是堆料。这里说的堆料,不仅仅说的是手机芯片,在过去一段时间内,手机开始有着越来越轻薄的机身,越来越高的性价比,越来越强大的处理器,越来越细节升级?特斯拉Model3有望2023年改款进一步压低成本据外媒报道,特斯拉旗下的Model3车型有望于2023年迎来改款,其中中国工厂生产的版本可能会率先进行改款,可能会在2023年第三季度正式投产。关于改款Model3目前曝光的细节并Cloudpods容器化经验分享Cloudpods是一个开源的多云混合云管理平台。Cloudpods首先是一个私有云云平台,具备将计算节点使用开源QEMUKVM虚拟化技术虚拟出虚拟机,实现私有云的功能。其次,Cl国补退出或将加剧新能源车市竞争本报记者夏金彪延续了13年之久的国家新能源汽车财政补贴政策(以下简称国补),再过一个月,就将正式退出历史舞台。围绕国补退出这一节点,新能源车企的市场争夺战已经展开。近日,新能源龙头走进县城看发展河北省衡水市阜城县头条创作挑战赛走进县城看发展今日分享河北省衡水市阜城县阜城县简介阜城县是河北省衡水市下辖县,位于河北省东南部,衡水市东北部,属黑龙港流域,总面积697平方公里,阜城县辖6镇4乡,6房地产行情能走多远昨天A股三大指数放量大涨,房地产板块是最耀眼的名星,收盘有近50只房地产股票封涨停板。实际上房地产在一个月前就已经见底涨了一波,先知先觉的主力早已潜入其中了,今天是利用太多太多的利明年通胀压力更大?专家建议2023年,这4件事,尽量不要做众所周知,自疫情爆发老美为提振经济进行大放水开始,我国就受到了全球性输入性通胀的影响,国内大宗商品价格就出现了持续上涨。紧接着,地缘冲突外加疫情反复等各种影响,导致国内汽油天然气煤
5年1。58亿顶薪,被批垃圾合同!转会奇才后,波尔津吉斯表现如何波尔津吉斯曾被视为NBA最有前途的超级新人之一。早在2019年的时候,当时只有23岁的他,便和独行侠签下一份5年1。58亿顶薪。要知道,当时的波尔津吉斯常年重伤不断,却并没有阻止他CBA广东男篮战胜天津男篮,球迷强烈呼吁归化广东队核心外援北京时间10月23日,常规赛第6轮比赛中,同曦加时战胜上海取得赛季第三胜。本场比赛过后,同曦取得3胜3负的战绩,胜场已超过上赛季的2场。此役,同曦送给上海四连败的同时,也是两队交锋福建厦门供应链巨头一年进账4844亿元,物流业务收入超过顺丰根据2022年度中国物流企业50强显示,去年50家企业物流业务收入合计达19443。58亿元,同比增长47(按可比口径计算)。中国远洋海运集团蝉联第一,厦门象屿以2312。6亿元的CBA最新积分榜浙江11394福建升第2北京时间2022年10月24日,20222023赛季CBA常规赛第7轮第1比赛日展开争夺,在刚刚结束的首个比赛日的争夺中,浙江稠州金租11381大胜深圳马可波罗,山西汾酒11994CCTV5直播!丁彦雨航反戈山东男篮,李春江必须放手一搏北京时间10月25日,CBA常规赛迎来第七轮的争夺,今天上演的多场大战当中,上海男篮和山东男篮的系列赛,毫无疑问是看点十足,丁彦雨航已经休息2场比赛,首次以对手的身份与老东家山东男拥有的只是侥幸,失去的全是注定沧海月明珠有泪,蓝田日暖玉生烟。此情可待成追忆,只是当时已惘然!寂静的夜,孤单的人,心绪徘徊,夜未寝,窗前眺望,寒风吹,又添凄凉,天上星伴我无眠爱过的人,哪有那么容易放下的?一颗痛享福就是消福,受苦就是积福生活中的一切,哪怕是一粒米一杯水,都是我们命中的福报,不可随意浪费。人的福气有量,小时候多吃些苦,少消福,福气就能留到晚年。小时候把福气享受完了,老年时就没有了。所以才有这种,享福路站峰我是一个非常现实的人我是路站峰,是一枚塔罗师,希望能够用文字温暖你,治愈你。1。hr有人问我生活中什么最重要?一天当中什么最重要?我是一个非常现实的人,我觉得生活中银子最重要,我觉得一天当中赚银子最重三十岁,再见三十一岁,你好恍惚之间我人生的前三十年就这样过完了。以前总认为自己三十年的经历可以写本书了,后来才发现,自己只是芸芸众生中的一个平凡普通人罢了。自己有时还是很恍惚的,不曾想到三十年就这么过来了。停止内耗,32岁又怎样,只要愿意改变都不晚一个人的觉醒从正确认识自己开始。成长的路上愿与你一起遇见更好的自己我91年的,今年已经32了,很多时候,我总是陷入迷茫当中,经常自我否定,自我怀疑,会陷入莫名的焦虑中,特别是疫情这花钱容易挣钱难,不尝汗水不知咸,百般滋味尝过,才知道酸甜苦辣花钱容易挣钱难,不尝汗水不知咸,柴米油盐才是生活,百般滋味自己尝过,才知道酸甜苦辣,天黑可以矫情,天亮就得拼命,花钱容易争钱难,不尝汗水不知咸不受三冬极寒天,哪知春风暖人间愿你苦尽