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

Matplotlib快速入门

  这个教程包含了些基础的用法示例和练习,可以帮助您很快熟悉Matplotlib。
  import matplotlib as mpl
  import matplotlib.pyplot as plt
  import numpy as np一个简单示例
  Matplotlib 将您的数据绘制在Figures(画布)上,每一张画布上可以包含一个或多个Axes(坐标系,您可以把坐标(x,y)显示在Axes中,极坐标中的(theta,r),3D坐标的(x,y,z)等)。创建带坐标系的图形的最简单的方法是使作pyplot.subplots(),然后就可以用Axes.plot()方法来在坐标轴上绘制数据。
  fig,ax = plt.subplots() #创建一张画布,上面有一个坐标系
  ax.plot([1,2,3,4],[1,4,2,3]) # 往坐标系上绘制数据
  []
  png
  Figure的结构
  Figure统筹了所有的子坐标系,那是一组特殊的Artists(包含标题、图例、色条等),甚至嵌套的subfigures。 创建新Figure最简单的方法是用pyplot,如:
  fig1 = plt.figure() # 一个没有坐标系的空画布,不显示
  fig2,ax = plt.subplots() # 包含一个坐标系的画布
  fig3,axs = plt.subplots(2,2) # 包含2*2坐标系阵列的画布
  png
  png
  将轴与图形一起创建是很方便,但可能不够灵活,您也可以后期手动添加坐标系,要注意,很多Matplotlib后端支持缩放和平移。Axes
  Axes坐标系,可以把它当成一个Artist(画家,我感觉画纸可能更贴切一些),把他绑定到画板(Figure)上,它包含一个可以画图的区域,一般包含2个(3D图的话是3个)Axis(数轴)对象,Axis对象(注意和Axes对象区别,一个是数轴,一个是坐标系)提供了ticks和tick labels来显示坐标轴的刻度,每个Axes坐标系也有一个title(通过set_title()方法来设置),一个x-label(通过set_xlabel()设置),一个y-label(通过set_ylabel()方法来设置)。
  Axes类及其成员函数是使用OOP接口的主要入口,里面定义了大多数的绘图方法,比如ax.plot()Axis
  Axis对象设置比例尺和数值范围,生成标记(ticks,轴上的记号)和标记名(ticklabels,标记记号的字符串),记号的位置由Locator对象确定,标记名字符串由Formatter格式化。正确地组合使用Locator和Formatter可以精准控制刻度位置和标签。 ## Artist 基本上,Figure上所有的可见对象都是Aritst(甚至Figure,Axes,Axis对象也是),主要包括Text对象,Line2D对象,collections对象,Patch对象等,当Figure开始渲染时,所有的Aritst都被绘制到Axes上,这些Artist不能被其他坐标系共享,也不能从一个坐标系移动到另一个。输入绘图函数的参数类型
  绘图函数需要numpy.array 或者 numpy.ma.masked_array作为输入参数,或者可以传入numpy.asarray的参数,类似数组的类,如pandas数据对象和numpy.matrix对象可能无法按预期工作。常用的作法是绘图前将它们转换成numpy.array对象,比如转化成mumpy.matrix
  b = np.matrix([[1,2],[3,4]])
  b_asarray = np.asarray(b)
  大多数的对象也会解析一个可寻址对象,比如dict,numpy.recarray,pandas.DataFrame。Matplotlib允许您提供数据关键字参数并生成对应于x和y变量的字符串的图象
  np.random.seed(19680801)
  data = {"a":np.arange(50),
  "c":np.random.randint(0,50,50),
  "d":np.random.randn(50)}
  data["b"] = data["a"] + 10 * np.random.randn(50)
  data["d"] = np.abs(data["d"]) * 100
  fig,ax = plt.subplots(figsize=(5,2.7),layout="constrained")
  ax.scatter("a","b",c="c",s="d",data=data)
  ax.set_xlabel("entry a")
  ax.set_ylabel("entry b")
  Text(0, 0.5, "entry b")
  png编码样式显式和隐式接口
  如上所述,有两种方法可以使用Matplotlib 1. 显式创建Figures和Axes,并调用它们的方法(面向对象的方法)。 2. 依靠pyplot隐式创建和管理Figures和Axes,并使用pyplot的函数进行绘图。
  面向对象方法的例子
  x = np.linspace(0, 2, 100) # Sample data.
  # 注意,即使是面向对象的风格,我们也用matplotlib.pyplot.figure来创建Figure
  fig, ax = plt.subplots(figsize=(5, 2.7), layout="constrained")
  ax.plot(x, x, label="linear") # 往坐标轴上画数据.
  ax.plot(x, x**2, label="quadratic") # ...
  ax.plot(x, x**3, label="cubic") # ... .
  ax.set_xlabel("x label") # 设置X轴标记.
  ax.set_ylabel("y label") # 设置Y轴标记.
  ax.set_title("Simple Plot") # 设置坐标轴标题.
  ax.legend() # 增加图例.
  
  png
  pyplot的例子
  x = np.linspace(0,2,100)
  plt.figure(figsize=(5,2.7),layout = "constrained")
  plt.plot(x,x,label = "linear")
  plt.plot(x,x**2,label = "quadratic")
  plt.plot(x,x**3,label = "cubic")
  plt.xlabel("x label")
  plt.ylabel("y label")
  plt.title("simple plot")
  plt.legend()
  
  png
  Matplotlib的文档和示例同时使用面向对象的OO和pyplot样式。一般来说,我们建议使用OO风格,尤其是对于复杂的绘图以及打算作为大型项目的一部分重用的函数和脚本。然而,pyplot样式对于快速交互工作非常方便。大家可以根据实践需要来选择。代码复用
  如果您需要使用不同的数据集反复绘制相同的绘图,或者想要轻松包装Matplotlib的方法,可以使用下面的自定义函数
  def my_plotter(ax,data1,data2,param_dict):
  out = ax.plot(data1,data2,**param_dict)
  return out
  # 例如:
  data1, data2, data3, data4 = np.random.randn(4, 100) # make 4 random data sets
  fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(5, 2.7))
  my_plotter(ax1, data1, data2, {"marker": "x"})
  my_plotter(ax2, data3, data4, {"marker": "o"})
  []
  png
  大多数的绘图方法都有样式选项,这些选项可以在调用plotting方法时调用,或者在Artist中的"setter"中访问。在下边的绘图中,我们手动设置颜色、线宽、和线的样式,然后使用set_lifestyle设置第二行的线条样式。
  fig,ax = plt.subplots(figsize=(5,2.7))
  x = np.arange(len(data1))
  ax.plot(x,np.cumsum(data1),color="blue",linewidth=3,linestyle = "--")
  l, = ax.plot(x,np.cumsum(data2),color="orange",linewidth=2)
  l.set_linestyle(":")
  png
  Matplotlib 有一个非常灵活的颜色阵列,大多数艺术家都接受它;有关规格列表,请参阅颜色教程。有些艺术家会采用多种颜色。即对于散点图,标记的边缘可以是与内部不同的颜色:
  fig, ax = plt.subplots(figsize=(5,2.7))
  ax.scatter(data1,data2,s=50,facecolor="C0",edgecolor="k")
  
  png线宽、线型和标记
  Matplotlib的线宽用印刷点来表示(1pt=1/72英寸),可用于描边,类拟地,描边线可以具有自己的线条样式。
  Marker size标记的大小取决与所使用的方法,plot以点为单位指定标记的大小,一般来说是Marker的直径或宽度。
  scatter指定标记大小与标记的可视区域大致成比例。
  一些常用的标记样式Matplotlib已将其设置为字符串代码,当然,用户也可以自定义自已的标记样式。
  fig,ax = plt.subplots(figsize=(5,2.7))
  ax.plot(data1,"o",label="data1")
  ax.plot(data2,"d",label="data2")
  ax.plot(data3,"v",label="data3")
  ax.plot(data4,"s",label="data4")
  ax.legend()
  
  png给图贴标签Axes的标签和文本
  set_xlabel、set_ylabel和set_title用于在指定位置添加文本。也可以使用文本将文本直接添加到绘图中:
  mu,sigma = 115,15
  x = mu + sigma*np.random.randn(10000)
  fig,ax = plt.subplots(figsize=(5,2.7),layout="constrained")
  # 柱状图的数据
  n,bins,patches = ax.hist(x,50,density=True,facecolor="C0",alpha=0.75)
  ax.set_xlabel("Length")
  ax.set_ylabel("probability")
  ax.set_title("Aardvark lengths  (not really)")
  ax.text(75,.025, r"$mu=115, sigma=15#39;)
  ax.axis([55,175,0,0.03])
  (55.0, 175.0, 0.0, 0.03)
  png
  所有的text函数返回一个matplotlib.text.Text实例,您也可以通过向text函数中传入关键字参数来自定义特性。
  t = ax.set_xlabel("my data",fontsize = 14,color="red")在文本中使作数学表达式
  Matplotlib 接受Tex方程表达式。如:
  ax.set_title(r"$sigma_i=15#39;)
  Text(0.5, 1.0, "$sigma_i=15#39;)
  我们还可以给绘图填加注释
  fig,ax = plt.subplots(figsize=(5,2.7))
  t = np.arange(0.0,5.0,0.01)
  s = np.cos(2*np.pi*t)
  line, = ax.plot(t,s,lw=2)
  ax.annotate("local max",
  xy=(2,1),
  xytext=(3,2),
  arrowprops=dict(facecolor="black",shrink=0.05))
  # xy是箭头指向的图中的数据点
  # xytext是文本开始的数据点,也是箭尾指向的数据点
  ax.set_ylim(-2,2)
  (-2.0, 2.0)
  png
  有时,为了便于用户理解,我们常常给图加上图例。
  fig, ax = plt.subplots(figsize=(5, 2.7))
  ax.plot(np.arange(len(data1)), data1, label="data1")
  ax.plot(np.arange(len(data2)), data2, label="data2")
  ax.plot(np.arange(len(data3)), data3, "d", label="data3")
  ax.legend()
  
  png坐标系风格和标尺
  每一个坐标系Axis都有两个或三个数轴(Axis)对象对应x轴和y轴(以及z轴),它们控制了Axis的风格,标尺的位置和标尺的格式。
  除了线性比例,Matplotlib还提供了非线性比例,比如对数比例,如loglog,semilogx,semilogy。这里我们手动设一下比例尺。
  fig, axs = plt.subplots(1, 2, figsize=(5, 2.7), layout="constrained")
  xdata = np.arange(len(data1)) # make an ordinal for this
  data = 10**data1
  axs[0].plot(xdata, data)
  axs[1].set_yscale("log")
  axs[1].plot(xdata, data)
  []
  png
  fig, axs = plt.subplots(2, 1, layout="constrained")
  axs[0].plot(xdata, data1)
  axs[0].set_title("Automatic ticks")
  axs[1].plot(xdata, data1)
  axs[1].set_xticks(np.arange(0, 100, 30), ["zero", "30", "sixty","90"]) #第一个是ticket,第二个是label,前后一一对应的关系
  axs[1].set_yticks([-1.5, 0, 1.5]) # note that we don"t need to specify labels
  axs[1].set_title("Manual ticks")
  Text(0.5, 1.0, "Manual ticks")
  png日期字符串
  Matplotlib可以处理日期数组、字符串数组以及浮点数的绘制。它们会根据需要获得特殊的标尺和标签。对于日期:
  fig, ax = plt.subplots(figsize=(5, 2.7), layout="constrained")
  dates = np.arange(np.datetime64("2021-11-15"), np.datetime64("2021-12-25"),
  np.timedelta64(1, "h"))
  data = np.cumsum(np.random.randn(len(dates)))
  ax.plot(dates, data)
  cdf = mpl.dates.ConciseDateFormatter(ax.xaxis.get_major_locator())
  ax.xaxis.set_major_formatter(cdf)
  png
  关于分类绘图需要注意的一点是,某些分析文本文件的方法会返回字符串列表,即使字符串都表示数字或日期。如果您传递1000个字符串,Matplotlib将认为您是指1000个类别,并将为您的绘图添加1000个刻度!一些其他的轴对像
  在一个图表中绘制不同单位或大小的数据可能需要额外的y轴。这种情况可以通过使用twinx添加一个新的轴来创建,该轴具有一个不可见的x轴和一个位于右侧的y轴(类似于twiny)。如图:
  fig, (ax1, ax3) = plt.subplots(1, 2, figsize=(7, 2.7), layout="constrained")
  l1, = ax1.plot(t, s)
  ax2 = ax1.twinx()
  l2, = ax2.plot(t, range(len(t)), "C1")
  ax2.legend([l1, l2], ["Sine (left)", "Straight (right)"])
  ax3.plot(t, s)
  ax3.set_xlabel("Angle [rad]")
  ax4 = ax3.secondary_xaxis("top", functions=(np.rad2deg, np.deg2rad))
  ax4.set_xlabel("Angle [°]")
  Text(0.5, 0, "Angle [°]")
  png
  有时候我们想在二维图中表现三维的信息,我们希望在一个由颜色图中的颜色表示的绘图中有一个第三维度。Matplotlib有许多绘图类型可以做到这一点:
  X, Y = np.meshgrid(np.linspace(-3, 3, 128), np.linspace(-3, 3, 128))
  Z = (1 - X/2 + X**5 + Y**3) * np.exp(-X**2 - Y**2)
  fig, axs = plt.subplots(2, 2, layout="constrained")
  pc = axs[0, 0].pcolormesh(X, Y, Z, vmin=-1, vmax=1, cmap="RdBu_r")
  fig.colorbar(pc, ax=axs[0, 0])
  axs[0, 0].set_title("pcolormesh()")
  co = axs[0, 1].contourf(X, Y, Z, levels=np.linspace(-1.25, 1.25, 11))
  fig.colorbar(co, ax=axs[0, 1])
  axs[0, 1].set_title("contourf()")
  pc = axs[1, 0].imshow(Z**2 * 100, cmap="plasma",
  norm=mpl.colors.LogNorm(vmin=0.01, vmax=100))
  fig.colorbar(pc, ax=axs[1, 0], extend="both")
  axs[1, 0].set_title("imshow() with LogNorm()")
  pc = axs[1, 1].scatter(data1, data2, c=data3, cmap="RdBu_r")
  fig.colorbar(pc, ax=axs[1, 1], extend="both")
  axs[1, 1].set_title("scatter()")
  Text(0.5, 1.0, "scatter()")
  png多画板和多轴模式
  您可以使用fig = plt.figure()或者fig2,ax=plt.subplots()方法打开多个画板(Figures),在保留对象引用的前提下,您可以向任一画板添加画家(Artists)。
  您可以通过多种方法来添加坐标系,但最基础的方法还是上面用过的plt.subplots(),要想实现更复杂的布局,如跨行列的布局,可以用subplot_mosaic()方法。
  fig,axd = plt.subplot_mosaic([["upleft","right"],["lowleft","right"]],
  layout = "constrained")
  axd["upleft"].set_title("upleft")
  axd["lowleft"].set_title("lowleft")
  axd["right"].set_title("right")
  Text(0.5, 1.0, "right")
  png

DNF为什么别人的装备上,有颗星?这种情况有两种可能第一种就是艾肯传说装备,每件装备有13颗小星星第二种就是wegame的补丁!dnf中的装备分为好几个等级蓝装,白装,紫装,粉装,传承,圣物,传说,史诗!正常的装备膝关节疼痛,每天什么时间锻炼什么最好?膝关节疼痛,不要盲目的去锻炼,虽然锻炼可以让肌肉力量提高,让关节活动范围进一步恢复,但是,锻炼很多时候没办法达到目的,因为痛点的存在会让锻炼不精准,事倍功半,和锻炼的时间没什么关系脑梗和腔梗的区别是什么?前两天老家的哥哥给我打电话,电话那边焦急的说我得了脑梗塞了,会不会偏瘫不会说话什么的啊?我让他把头颅CT的结果发过来我看一下,结果不出所料是腔隙性脑梗塞。结果,我给他回电话告诉他不没有编制为什么有些人还愿意做代课老师?没有编制为什么有的人这要去代课教师?没有编制为什么有的人还要去做代课教师?为了生存,为了有事干。看看我身边的几个熟人,为什么去做代课教师的?王老师,早年和老公两个一起在同一个生产队人经历过怀疑人生,没有自信心,都是自卑,应该怎么办?首先说怀疑人生就是对自己和家人的不尊重没有自信心就是践踏一个人的美好未来所以这就足以引发了你的自卑感个人认为当务之急放下你曾经对自己诸多的不确定因素无论因为什么全部放下使全身心放开可以推荐几部非常好看的电视剧吗?你好,我是新晋娱乐领域创作者,很高兴与你一起探讨这个话题。3月,我同时追了4部剧和1个综艺,与你分享一下。安家与完美关系导演都是安建,两部剧中有近10位重合的演员。安家主要讲述房产身材H形穿什么衣服好看?身材H形,特点是胸臀腰尺寸比例比较接近,缺少女性凹凸曲线美,身材比较中性化。H形身材在穿衣时,重点是加强突出胸部臀部的视觉膨胀,让腰部看起来更细,我们根据街拍图片进行分析一在中腰处易烊千玺的书法从专业角度讲怎么样?不止一次私下有人问过我这个问题,我的回答是很好。一个00后,一个歌手,一个舞者,一个演员,一个学生,同时要兼顾学业和娱乐演艺事业,还要练书法,非常不错。首先从拿笔姿势上来说,易烊千比特币近期涨涨跌跌,这种情况是属于正常的吗?谢谢邀请!比特币近期涨涨跌跌是正常现象,不必惊慌。如果你己持有那就继续持有不必抛售如果你还未持有不必追涨,低位时才可进场。比特币风险极大,不是合法流通货币,其风险也不是普通老百姓可三峡大学毕业生就业情况怎么样?这所高校办学历史最早可以追溯至1923年,但我们知道三峡大学是一所年轻的高校,是在2000年由原武汉水利电力大学和原湖北三峡学院合并组建的,是水利部和湖北省共建大学,属于湖北省国内为什么国足历史上,没有一次球员集体要求保留教练的情况出现?这是因为中国足球球员水平低下球商弱智,基本上还处在足球发展的原始状态,他们还没有这方面的意识!再加上一些球员球商不高反而脾气不小,喜欢充大佬装行家,就造就了如今的局面!换谁都一样。
5分5板4失误!李月汝难掩低迷晋级四强后,急需她调整状态北京时间9月28日,女篮世界杯淘汰赛继续正式,中国女篮8571法国女篮,此役李月汝出战16分钟,得到5分5篮板4失误的数据,整体状态低迷,郑微指导下半场不敢长时间使用李月汝,反而是九牧集团持续提升科技创新能力智造厨卫装点高品质生活九牧集团5G数字化产业中心。(资料图片)5G智能灯塔工厂长什么样?自动导引车在生产线上来回穿梭,配送物料5G机器人一丝不苟地加工产品人工智能视觉检测严格把控质量在位于福建南安的九牧使周边配套出租率提高70的购物中心,需要怎样的资管能力?作者张爱编辑陈剑誉视觉张爱责编韩玮烨自疫情开始,实体商业购物中心场均日客流量逐年下滑,从2020年的2万人2021年的1。85万人,已降至今年上半年的1。5万人。但出乎意料的是,从盘点世界杯小组赛中国女篮7名替补表现,1米76后卫或是最大惊喜2022女篮世界杯,中国女篮在小组赛取得了4胜1负的出色成绩,最终以小组第2身份晋级8强。回顾本届女篮世界杯小组赛,中国女篮可谓是人人奋勇,个个争先,除了先发五将出色的发挥,以下这新能源卷王横空出世,在加油站换电池或许不再是幻想最近这后台收到的粉丝私信里,咨询新能源车型的相关问题是越来越多了。今天一大早刚起床,就看到一条非常有意思的,所以决定来和大家一起聊一聊。这位粉丝跟我说师兄,最近想入手35万左右的新梦回千年开封发现宋代堤岸石壁填补北宋石刻艺术空白大象新闻河南新闻广播记者张颍辉程冰冰谷艳敏刘秋茹黄欣报道9月28日,国家文物局发布开封北宋东京城州桥遗址等最新考古成果,总长约30米的宋代堤岸石壁的发现,填补了北宋石刻艺术的空白。今夜是何人,天涯游子思亲苦,梦醒时分泪满襟一片心,今夜是何人,天涯游子思亲苦,梦醒时分泪满襟。天涯游子归何处,佳人泪满襟,最是故乡今夜照孤魂。过桥西,遥望故乡云脚低,依稀慈母泪,天涯游子几回啼。一别经年泪几多,天涯游子意如潇洒!广州队亿元先生开房车自驾游,塔利斯卡圆月弯刀雄霸射手榜广州队深陷保级区,归化球员被媒体人人喊打,中超八冠王深陷了历史最差的处境。万万没想到的就是,离开广州队的那一些旧人,却在潇洒走一回。被冠以亿元先生的张文钊,在广州队效力期间无法证明观赛小指南!2022女排世锦赛今夜开打,整个小组赛有4点值得关注今夜,即9月24日零点,2022女排世锦赛就要开打了。首先进行的是小组赛9月24日10月2日,在漫长的9天时间内,4个小组24支球队共要打60场小组赛,紧锣密鼓交相登场,压轴排球盛今夜,再也没有诗意郝有花(图片来自网络)窗外九月的微风轻轻路过不知道是谁,今夜又无眠一次次轮回,一次次错位不知眼前,一地的落叶是生命的延续,还是别离的开始流年里我不再是那个傻傻的痴儿因为某种情愫,在洞庭渔火季惊艳破圈背后藏着岳阳文旅突围的密码夜幕来临,洞庭湖畔也沸腾起来了。洞庭南路历史文化街区灯火璀璨,人声鼎沸,这里不仅有绝妙的人间美食,也有老少咸宜的娱乐活动不远处的岳阳楼景区和汴河街,同样热闹非凡,各种网红小吃文创产