Matploylib初学(2)

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

Annotation(注释)


基本注释

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


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

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

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

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

使用文本框进行注释

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


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

常见的文本框样式:

使用箭头

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


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


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

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

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

使用legend

颜色


常用的表达方式

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

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

直方图


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

下面是一个简单的例子:



结果如下:

三维图


开始

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

三维曲线

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


结果如下:

三维点图

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


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

三维曲面

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


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

条形图


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

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

下面是一个简单的例子:



其中:

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

结果如下:


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

饼图


使用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。
    下面是一个简单的例子:

结果如下:


附:

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,783评论 5 472
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,396评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,834评论 0 333
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,036评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,035评论 5 362
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,242评论 1 278
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,727评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,376评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,508评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,415评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,463评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,140评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,734评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,809评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,028评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,521评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,119评论 2 341

推荐阅读更多精彩内容