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

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

这样的孩子是来讨债的吗?你们怎么看呢?头条创作挑战赛曾仕强教授说过子女有两种,一种是来报恩的,还有一种是来讨债的。我一个亲戚的孩子,从小聪明聆利,成绩一直是班上名列前茅,老师同学也特别喜欢他,一直当着班长。他一直是家里血型遗传规律A血型B血型的孩子会是什么血型?ABO血型系统人类的血液内有以下的抗原抗体,组成不同的血型A型血的人红血球表面有A型抗原他们的血清中会产生对抗B型抗原的抗体。一个血型为A型的人只可接受A型或O型的血液。B型血的人呵护孩子很重要,呵护女儿更重要!作为父母,保护和照顾女儿是我们最重要的责任之一,而在现代社会中,各种纷繁复杂的情形让父母们非常担忧自己的女儿会受到各种形式的伤害。下面,本文将介绍一些方法,以帮助父母更好地保护女儿南京溧水河长制公园正式揭牌扬子晚报记者3月22日讯(记者姜婧仪通讯员王旭峰)以前这里是建材城,没想到现在变成了河畅水清景美的小公园。3月22日,南京溧水河长制公园正式揭牌,这让附近小区的居民们都惊喜不已。活八弓镇桃花盛开迎客来来源三穗县人民政府图片新闻近日,八弓镇新美村1200余亩桃花相继绽放,大地如同披上了一层粉色的霞帔,美不胜收,游客们三三两两穿梭其间,构成了一幅美丽迷人的春日田园风光图。近年来,八赏花好时节来源经济日报空中俯瞰江苏省兴化市千垛景区,身披金装的垛田与河道交错纵横,美不胜收。计海新摄(中经视觉)四川省眉山市仁寿县曹家镇的3。2万亩梨花竞相绽放,吸引众多游客前来踏春赏花。潘赏花正当时垫江牡丹文化节23日开幕垫江牡丹花。垫江县委宣传部供图3月23日,2023年垫江牡丹文化节暨世界牡丹大会垫江分会场活动将在重庆市垫江县开幕,持续至4月下旬。今年的垫江牡丹文化节由重庆市文化和旅游发展委员会文旅赋能乡村振兴,第四届长三角乡村文旅创客大会在湖州南浔举行新民晚报讯(记者唐闻宜)今年春节,湖州南浔古镇宣布永久免费,刷屏网络。7天古镇接待游客38万人次,实现营收2。287亿元,比2019年增长265,为全国文旅市场复苏开了个好头。而这真美!五角场环岛郁金香盛放!来赏郁金香啦阳春三月,芬芳满城。今天,我们迎来了春分节气,万物生发的季节,各色春花悄悄绽放。现在的五角场环岛,正沉浸在绚烂的郁金香花海中。记者从上海杨浦园林绿化建设养护有限责任公司去寺庙烧香,这四尊菩萨,一定要拜一拜很多人去寺庙,都喜欢拜一拜菩萨,如果你在烧香时,遇到了这四尊菩萨,一定要拜一拜。菩萨的全称是菩提萨埵,觉智道之意,萨埵,众生有情之意,与声闻缘觉合称三乘。即指以智上求无上菩提,以悲官宣了!4月1日起4月1日起海南离岛免税购物可担保即提即购即提海关总署财政部国家税务总局3月21日联合发布关于增加海南离岛免税购物担保即提和即购即提提货方式的公告,从4月1日起新增担保即提和即购即提
助力快乐健身行动,少儿体育不止运动这么简单!青少年体育工作是少年儿童的健康成长和全面发展的重要抓手,为引导广大青少年积极参与体育健身运动,强健体魄砥砺意志,凝聚和焕发青春力量,一项项关于少年儿童全面发展的制度文件体育强国建设手表自动机械机心中,你见过这种自动陀吗?随着机械手表的不断演进发展,机心在注重性能稳定性的同时,艺术美观也是机械表十分重要的价值体现。贵金属镂空雕花各种工艺打磨等可谓层出不穷。但无论如何锦上添花,机械机心中传统的半幅式自德化九仙山弥勒造像千年不问岁月幽核心提示泉州石窟造像艺术有着悠久的历史,曾创作出众多精美的艺术品。德化海拔1658米高的九仙山弥勒洞内,就有一尊古老的弥勒坐像。那里岩洞幽邃,造像古朴苍劲。石造像形象逼真,整体富有为遗失物立电子墓碑,令青春的线索犹可追文高维提及电子墓碑,很多人会想到逝者的社交账号。但你可能不知道,如今也有人用它来祭奠没有生命的物品。网页截图据报道,豆瓣有个遗失之物墓园小组,不少成员在此为校园卡水杯等物品立碑,并人生的意义是什么如果命运完全注定,人生还有什么意义?人生的几大经典问题之一,人生的意义是什么?这个问题从人类第一次仰望星空,开始诞生思维,就被无数文人学者追问,其实早就有了答案,那么答案是什么?先真正强大的人,早就戒掉了情绪!朝鲜族流传一句谚语一怒之下踢石头,痛的只有脚趾头。人生在世,七情六欲常伴身边。如果你不能控制情绪,到头来也只是会伤己伤人。所以很多时候,要看一个人是强还是弱,只要看这个人的情绪就足读书摘抄Day1每日摘抄太阳太阳微风海的女儿是为了告诉你,即使你为了爱一个人,把尾巴变成了双腿,天天困在厨房里,但是只要你愿意穿回那条鱼尾裙,你仍然是那个最漂亮的美人鱼微风没有刻在骨子里的抄书变现第46天,坚持的意义抄书变现第46他,朋友们好我是沐阳。今天是我抄书变现的第46天,展现量1万千4多,阅读量254(感谢),12个点赞(感谢),涨粉5人(感谢)。耐心和坚持是成功的基础。抄书人加油!今经常使用数字设备安抚儿童情绪可能适得其反这是许多父母都经历过的场景就在他们准备做饭打电话或办事时,他们的孩子情绪崩溃了。有时,将数字设备交给挑剔的学龄前儿童似乎可以提供快速解决方案。但新发现表明,这种镇定策略可能与未来更美团闪购,开启即时零售的兴盛时代从点外卖到点万物,近几年,用户的线上消费习惯发生了巨大的改变。即时零售这一线上线下相融合的销售方式,也在消费需求的变化中得到用户的青睐,而且其提供的用户价值却远远不只是为了应急。在宁德时代再次出手参股车企,这次是一家头部自主车企近日,奇瑞控股集团有限公司(下称奇瑞控股)发生了工商变更,股东新增宁波梅山保税港区问鼎投资有限公司,持股比例3。73。记者查询工商资料发现,该公司为宁德时代新能源科技股份有限公司(