Matploylib初学(2)

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

Annotation(注释)


基本注释

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

Matploylib初学(2)_第1张图片

Matploylib初学(2)_第2张图片

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

  1. facecolor用来描述箭头的颜色
  2. shrink表示箭头的头距离标注点和箭头尾距离文本点的百分比,当距离大于0.5时,由于两端不可能都距离0.5,所以直接从标注点开始算,如当shrink=0.6时:
Matploylib初学(2)_第3张图片

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

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

使用文本框进行注释

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

Matploylib初学(2)_第7张图片

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

常见的文本框样式:

Matploylib初学(2)_第8张图片

使用箭头

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

Matploylib初学(2)_第9张图片

Matploylib初学(2)_第10张图片

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


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

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

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

使用legend

Matploylib初学(2)_第11张图片
Matploylib初学(2)_第12张图片

颜色


常用的表达方式

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

  • 介于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()

Matploylib初学(2)_第13张图片

直方图


使用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外,其他都是可选参数

下面是一个简单的例子:


Matploylib初学(2)_第14张图片

结果如下:

Matploylib初学(2)_第15张图片
Matploylib初学(2)_第16张图片

三维图


开始

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

三维曲线

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

Matploylib初学(2)_第17张图片

结果如下:

Matploylib初学(2)_第18张图片

三维点图

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

Matploylib初学(2)_第19张图片

其中 c='r'表示颜色为红色, maker='^'表示用三角表示点,结果如下:
Matploylib初学(2)_第20张图片

三维曲面

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

Matploylib初学(2)_第21张图片

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

条形图


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

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

下面是一个简单的例子:


Matploylib初学(2)_第23张图片

其中:

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

结果如下:

Matploylib初学(2)_第24张图片

另:如果将p2改为
p2 = plt.bar(ind + width, y, width=width, color='r')
将xticks改为
plt.xticks(ind + width/2, ('G1', 'G2', 'G3', 'G4', 'G5', 'G6', 'G7'))
则结果变为:
Matploylib初学(2)_第25张图片

饼图


使用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。
    下面是一个简单的例子:
Matploylib初学(2)_第26张图片

结果如下:


Matploylib初学(2)_第27张图片
附:

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

你可能感兴趣的:(Matploylib初学(2))