Matploylib初学(2)

本文档介绍了Matplotlib库的注释、颜色选择、直方图、三维图、条形图和饼图的使用方法,包括annotate函数、颜色表达、直方图绘制、三维曲线、散点图和曲面图的创建,以及legend、颜色选择器和各种图形的参数调整。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

总结了annotate、颜色、直方图、三维图、条形图和饼图的用法。

Annotation(注释)


基本注释

下面代码完成基本注释的功能

7239122-fe05c10f91fbbd46.png

7239122-69043a2493ce28e9.png

其它的上一节已经说过,这里详细说说 arrowprops的参数:

  1. facecolor用来描述箭头的颜色
  2. shrink表示箭头的头距离标注点和箭头尾距离文本点的百分比,当距离大于0.5时,由于两端不可能都距离0.5,所以直接从标注点开始算,如当shrink=0.6时:
7239122-1aed078e6e00601e.png

也可以使用下面的方式使用annotate:

7239122-fc1416480a4ffe0b.png
7239122-6994176ef8d7b38d.png
  1. xycoords='data'表示数据坐标系,也就是说(3, 1)是针对图像上的点而言
  2. textcoords='axes fraction'表示子图坐标系,也就是说点(0.8, 0.95)是针对整个子图而言,而且使用的是百分比的形式,例如改为xytext=(0.5, 0.5):
7239122-5197272eb6e7ee4c.png
  1. horizontalalignment是控制文本的x位置参数,取值有leftcenterright
  2. verticalalignment是控制文本的y位置参数,取值有topcenterbottom
textcoords='polar'表示极坐标系
horizontalalignment可以简写为 ha
verticalalignment可以简写为 va

使用文本框进行注释

text()函数提供了bbox关键字,当bbox被标明时,就可以给文本加框

7239122-dd9a855bb82138d7.png

还可以使用另一种方式:
bb = t.get_bbox_patch()
bb.set_boxstyle("rarrow", pad=0.6)
get_bbox_patch()返回一个 FancyBboxPatch实例,可以通过该实例的 set_boxstyle()方法修改文本框的样式

常见的文本框样式:

7239122-09f5ab139508a562.png

使用箭头

annotate()方法通常可以用来绘画连接两个点的箭头
annotate()方法的第一个参数传入空字符串,就可以绘制一个箭头

7239122-b322697bf06ec1c7.png

7239122-50b88b1a825ae6f8.png

其中 arrowstyle控制箭头的形状,还可以设置其它的值和样式

7239122-42395625c0387e89.png
7239122-5cd2685ffcf2bc1f.png
7239122-164634c9415eddf8.png

7239122-a66d01674c0509c4.png

connectionstyle控制连接线的样式,还可以设置其它的样式:

  angle3表示圆弧形
  angle表示使用直角连接

注:有些arrowstyle只对部分connectionstyle起作用。
如果使用注释时设置了第一个字符串参数,默认会添加文本,也可以使用bbox添加文本框

使用legend

7239122-d17ed5113e84b0f1.png
7239122-d4bcff7d34385469.png

颜色


常用的表达方式

在大多数情况下,描述颜色可以使用以下几种方式:

  • 介于0~1之间的小数表示的RGB,例如(0.1, 0.2, 0.5)
  • 使用字符串表示的RGB,例如#0F0F0F
  • {'b', 'g', 'r', 'c', 'm', 'y', 'k', 'w'}中的其中一个
  • {'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9'}中的一个

“CN”颜色选择器

颜色可以被规定成一个满足正则表达式C[0-9]的字符串
th = np.linspace(0, 2*np.pi, 128)
ax.plot(th, np.cos(th), 'C1', label='C1')
ax.plot(th, np.sin(th), 'C2', label='C2')
ax.legend()

7239122-0c63707c603e1dc2.png

直方图


使用hist()方法计算并绘制x的直方图,返回值是一个包含(n, bins, patches)tuple

  1. 返回的tuple中有三个参数:
    n:表示直方图中各个条的数值(各条的高度)
    bins:值为直方图总条数加1,表示图中条的边
    patchs:是一个list,每个元素是一个条的对象
  2. hist()函数有很多参数可供选择,这里总结几个常用的:
    x:要绘画直方图的对象,一般情况下是一个array
    bins:默认为None,指定直方图的总条数
    normed:默认为False,当其值为True时,直方图的值进行了归一化,返回的n也是归一化后的值
    histtype:默认为bar,控制直方图的形状,还可以指定为step
    rwidth:默认为None,控制每条的宽度
    color:默认为None,控制颜色,不可以使用CN颜色选择器
其中除了x外,其他都是可选参数

下面是一个简单的例子:


7239122-a5a52a19ab5827a6.png

结果如下:

7239122-da4abea5f7de17d1.png
7239122-be4fd40bdd1b9962.png

三维图


开始

首先要导入相应的类库:
from mpl_toolkits.mplot3d import Axes3D,这个类库应该在matplotlib中。
创建三维图像需要使用关键字projection='3d'。首先创建一个Figure对象,再添加axes即可:

7239122-fdcd7c65aad60b7d.png

三维曲线

使用Axes3D.plot(x, y, z)绘制三维曲线(Axes3D表示三维子图的对象),其中z可以是与x, y等长的集合或者一个数,当变为一个数时就相当于在平面上作图。

7239122-c80b0358d10e629c.png

结果如下:

7239122-eed4b88909aba5b8.png

三维点图

使用Axes3D.scatter()绘制三维散点图

7239122-4875880953a7c188.png

其中 c='r'表示颜色为红色, maker='^'表示用三角表示点,结果如下:
7239122-74945dd0ab7334ed.png

三维曲面

使用Axes3D.plot_surface()绘制三维曲面图

7239122-67c7b21054ef1048.png

其中要注意 XY必须使用 meshgrid()函数处理, meshgrid()函数将向量 xy定义的区域转换成矩阵 XY,这两个矩阵可以用来表示 meshsurf的三维空间点以及两个变量的赋值。其中矩阵 X的行向量是向量 x的简单复制,而矩阵 Y的列向量是向量 y的简单复制。结果如下:
7239122-824d6013e08f8bc9.png

条形图


使用matplotlib.pyplot.bar()绘制一个条形图,返回值是一个list,其中每个元素是一个条形图中单个条的对象。

  • bar()函数有好几个参数,常用的参数有:
    left:可以理解为条的左侧的x坐标,是一个标量序列
    height:每个条的高度,就是你要绘制的数据
    width:每个条的宽度,默认为0.8
    bottom:条形图的底的起始数值,也就是y轴的起始值,可以分开指定每个条的底,默认为0
    color:设置条形图的颜色
 其中除了left和height外都是可选参数

下面是一个简单的例子:


7239122-185053f81e37113f.png

其中:

  • 给p2的每个条设置的bottom为p1,所以就呈现出连接的情形。
  • xticks()设置了x轴的说明,传入了两个参数,第一个参数表示需要标注的位置,第二个参数表示标注的内容。
  • yticks()设置了y轴的取值和间隔,范围为从0~81,间隔为10.
  • legend()设置了图注,其中p1和p2中的索引为0~ind之间的任意数。

结果如下:

7239122-2a69116adabe8b94.png

另:如果将p2改为
p2 = plt.bar(ind + width, y, width=width, color='r')
将xticks改为
plt.xticks(ind + width/2, ('G1', 'G2', 'G3', 'G4', 'G5', 'G6', 'G7'))
则结果变为:
7239122-119fdd9cd4d739a7.png

饼图


使用matplotlib.pyplot.pie()函数可以绘制一个饼图,返回值为patches、texts和autotext,都是list。

  1. pie()的参数:
    x:需要绘制成饼图的数据。
    explode:由一个array组成,表示饼图各个分块的间隔,默认为None
    labels:是一个list,提供饼图每个分块的名称的一个字符串,默认为None
    colors:可以是一个array,表示每个分块的颜色。
    autopct:指定每个分块的数据标签的格式,可以是format string或着函数。
    shadow:饼图是否添加阴影,默认为False
    startangle:指定饼图开始的角度,如果未指定将从x轴开始逆时针旋转,默认为False
其中x为必选参数,其余为可选参数
以上所有属性的指定顺序均为逆时针
  1. 返回值:
    patches:由饼图的所有分块的实例组成的list。
    texts:由饼图的所有分块的文本标签实例组成的list。
    autotexts:当autopct不为None时,返回一个由饼图所有分块的数据标签实例组成的list。
    下面是一个简单的例子:
7239122-725106178532a7e3.png

结果如下:


7239122-dfef290fc3597b3e.png
附:

所有内容均来自官方文档
可能有一些错误,希望大家指正哈!谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值