数据可视化,留着以后学。。

一、概述

  1. matplotlib的三层api

matplotlib的原理或者说基础逻辑是,用Artist对象在画布(canvas)上绘制(Render)图形。
就和人作画的步骤类似:

准备一块画布或画纸
准备好颜料、画笔等制图工具
作画
所以matplotlib有三个层次的API:

matplotlib.backend_bases.FigureCanvas 代表了绘图区,所有的图像都是在绘图区完成的
matplotlib.backend_bases.Renderer 代表了渲染器,可以近似理解为画笔,控制如何在 FigureCanvas 上画图。
matplotlib.artist.Artist 代表了具体的图表组件,即调用了Renderer的接口在Canvas上作图。
前两者处理程序和计算机的底层交互的事项,第三项Artist就是具体的调用接口来做出我们想要的图,比如图形、文本、线条的设定。所以通常来说,我们95%的时间,都是用来和matplotlib.artist.Artist类打交道的。

  1. Artist的分类

Artist有两种类型:primitives 和containers。
primitive是基本要素,它包含一些我们要在绘图区作图用到的标准图形对象,如曲线Line2D,文字text,矩形Rectangle,图像image等。
container是容器,即用来装基本要素的地方,包括图形figure、坐标系Axes和坐标轴Axis。他们之间的关系如下图所示:
分类
分类
670×636 52.3 KB
3. matplotlib标准用法

matplotlib的标准使用流程为:

创建一个Figure实例
使用Figure实例创建一个或者多个Axes或Subplot实例
使用Axes实例的辅助方法来创建primitive
值得一提的是,Axes是一种容器,它可能是matplotlib API中最重要的类,并且我们大多数时间都花在和它打交道上。更具体的信息会在之后容器小节说明。

一个流程示例及说明如下:

import matplotlib.pyplot as plt
import numpy as np

step 1

我们用 matplotlib.pyplot.figure() 创建了一个Figure实例

fig = plt.figure()

step 2

然后用Figure实例创建了一个两行一列(即可以有两个subplot)的绘图区,并同时在第一个位置创建了一个subplot

ax = fig.add_subplot(2, 1, 1) # two rows, one column, first plot

step 3

然后用Axes实例的方法画了一条曲线

t = np.arange(0.0, 1.0, 0.01)
s = np.sin(2np.pit)
line, = ax.plot(t, s, color=‘blue’, lw=2)

output_4_0

二、自定义你的Artist对象

  1. Artist属性

在图形中的每一个元素都对应着一个matplotlib Artist,且都有其对应的配置属性列表。

Figure本身包含一个Rectangle,Rectangle的大小就是Figure的大小;你可以用来设置Figure的背景色和透明度。
每个Axes边界框(默认白底黑边),也有一个Rectangle,通过它可以设置Axes的颜色、透明度等。
这些实例都存储在成员变量(member variables) Figure.patch 和 Axes.patch中。 (Patch是一个来源于MATLAB的名词,它是图形上颜色的一个2D补丁,包含rectangels-矩形,circles-圆 和 plygons-多边形)

换个表达方式:
Figure.patch属性:是一个Rectangle,代表了图表的矩形框,它的大小就是图表的大小, 并且可以通过它设置figure的背景色和透明度。
Axes.patch属性:也是一个Rectangle,代表了绘图坐标轴内部的矩形框(白底黑边), 通过它可以设置Axes的颜色、透明度等。

每个matplotlib Artist都有以下属性:

.alpha属性:透明度。值为0—1之间的浮点数
.axes属性:返回这个Artist所属的axes,可能为None
.figure属性:该Artist所属的Figure,可能为None
.label:一个text label
.visible:布尔值,控制Artist是否绘制
这里仅列举几个常见的属性,更详细的属性清单请查阅官方文档: Artist属性列表 10

.patch

plt.figure().patch
plt.axes().patch

output_7_1

  1. 属性调用方式

Artist对象的所有属性都通过相应的 get_* 和 set_* 函数进行读写。
例如下面的语句将alpha属性设置为当前值的一半:

a = o.get_alpha()
o.set_alpha(0.5*a)
如果想一次设置多个属性,也可以用set方法:

o.set(alpha=0.5, zorder=2)
可以使用 matplotlib.artist.getp(o,“alpha”) 来获取属性,如果指定属性名,则返回对象的该属性值;如果不指定属性名,则返回对象的所有的属性和值。

import matplotlib

Figure rectangle的属性

matplotlib.artist.getp(fig.patch)
agg_filter = None
alpha = None
animated = False
antialiased or aa = False
bbox = Bbox(x0=0.0, y0=0.0, x1=1.0, y1=1.0)
capstyle = butt
children = []
clip_box = None
clip_on = True
clip_path = None
contains = None
data_transform = BboxTransformTo( TransformedBbox( Bbox…
edgecolor or ec = (1.0, 1.0, 1.0, 0.0)
extents = Bbox(x0=0.0, y0=0.0, x1=432.0, y1=288.0)
facecolor or fc = (1.0, 1.0, 1.0, 0.0)
figure = Figure(432x288)
fill = True
gid = None
hatch = None
height = 1
in_layout = False
joinstyle = miter
label =
linestyle or ls = solid
linewidth or lw = 0.0
patch_transform = CompositeGenericTransform( BboxTransformTo( …
path = Path(array([[0., 0.], [1., 0.], [1.,…
path_effects = []
picker = None
rasterized = None
sketch_params = None
snap = None
transform = CompositeGenericTransform( CompositeGenericTra…
transformed_clip_path_and_affine = (None, None)
url = None
verts = [[ 0. 0.] [432. 0.] [432. 288.] [ 0. 288…
visible = True
width = 1
window_extent = Bbox(x0=0.0, y0=0.0, x1=432.0, y1=288.0)
x = 0
xy = (0, 0)
y = 0
zorder = 1
三、基本元素 - primitives

现在我们知道了如何检查和设置给定对象的属性,我们还需要知道如何获取该对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值