当前有效matplotlib版本为:3.4.1

概述

pyplot模块提供了获取/设置对象属性值的接口。功能类似于Python内置函数getattrsetattr。从源码上来看,get()getp()的别名,两者是等价的。setp()getp()的底层实现是基于Python内置函数getattrsetattr

getp()函数:获取对象属性

getp()函数的签名为matplotlib.pyplot.getp(obj, *args, **kwargs)
常用参数为:

  • obj :需要查询属性的对象。类型为 Artist对象,即matplotlib所有可见对象。必备参数。
  • property:需要查询的属性。类型为字符串或None, 默认值为 None
    • 当值为None时,返回对象的所有属性。
    • 当值为某属性名时,则会返回obj.get_属性名()的值。

返回值为查询对象的某个属性或为None,此时打印输出全部属性。

案例:演示getp()函数

import matplotlib.pyplot as plt# 获得Line2D对象line
line,=plt.plot([2,1])
# 获取line的color属性值
# 通过Python内置函数getattr和_color属性获取
c1=getattr(line,"_color")
# 通过Python内置函数getattr和get_color方法获取
c2=getattr(line,"get_color")()
# 通过getp函数获取
c3=plt.getp(line,"color")
print(c1,c2,c3)
# 输出line对象的所有属性
plt.getp(line)plt.show()

控制台输出为:

# color属性值
#1f77b4 #1f77b4 #1f77b4
# line对象所有属性列表agg_filter = Nonealpha = Noneanimated = Falseantialiased or aa = Truechildren = []clip_box = TransformedBbox(     Bbox(x0=0.0, y0=0.0, x1=1.0, ...clip_on = Trueclip_path = Nonecolor or c = #1f77b4
......

setp()函数:设置对象属性或属性的取值要求

setp()函数的签名为matplotlib.pyplot.setp(obj, *args, **kwargs)
常用参数为:

  • obj :需要设置属性的对象或对象列表。类型为 Artist对象或 Artist对象列表,即matplotlib所有可见对象。必备参数。
  • file :当查询属性取值要求时输出文件的位置。类文件对象。默认值为 sys.stdout
  • *args**kwargs:需要设置的属性值。

setp()函数的调用方式有很多种:

  • 设置一个对象的一个属性。

    line, = plot([1, 2, 3])
    setp(line, linestyle='--')
    
  • 设置多个对象的一个属性。

    lines = plot([1, 2, 3],[1, 2, 3],[4, 5, 6],[4, 5, 6])
    setp(lines, linestyle='--')
    
  • 设置一个对象的多个个属性。
    setp(line, linewidth=2, color='r')

  • 输出该属性的取值要求。
    setp(line, 'linestyle')
    输出为: linestyle: {'-', '--', '-.', ':', '', (offset, on-off-seq), ...}

  • 输出所有可设置的属性及其取值要求。
    setp(line)
    输出为:
    agg_filter: a filter function, ...

  • setp 还支持 MATLAB 式的键值对。
    setp(lines, 'linewidth', 2, 'color', 'r')

案例:演示 setp()函数

import matplotlib.pyplot as pltline,=plt.plot([2,1])
# 利用键值对设置属性
plt.setp(line,color='b')
# matlab式键值对
plt.setp(line,"color","g")
# 利用内置哈数setattr设置属性值
setattr(line,"_color",'red')
# 将color属性取值要求输出到标准输出
plt.setp(line,"color")
# 将line对象所有属性取值要求输出到标准输出
plt.setp(line)
# 设置多个对象的属性
lines = plt.plot([1, 2, 3],[1, 2, 3],[4, 5, 6],[4, 5, 6])
plt.setp(lines, linestyle='--')
# 将获取到的color属性取值要求输出到setp.log中
with open("setp.log","a+") as f:plt.setp(line,"color",file =f)
plt.show()

控制台输出为:

# color属性取值要求
color: color
# 所有属性取值要求
agg_filter: a filter function, which takes a (m, n, 3) float array and a dpi value, and returns a (m, n, 3) array
alpha: scalar or None
animated: bool
antialiased or aa: bool
clip_box: `.Bbox`
clip_on: bool
clip_path: Patch or (Path, Transform) or None
color or c: color
contains: unknown
dash_capstyle: `.CapStyle` or {'butt', 'projecting', 'round'}
dash_joinstyle: `.JoinStyle` or {'miter', 'round', 'bevel'}
......

总结

matplotlib当中,所有可见对象都继承自Artist类,因此,这些对象被称为Artist。

pyplot模块的setp()getp/get()等函数底层其实都是调用的Artist类的相关方法。

属性操作中属性名称可能是一个令人疑惑的地方。
matplotlib当中,实际的属性值存储在_开头的属性中,然后对外提供setter 、getter方法调用。

例如Line2D对象,其颜色属性为_color,对外接口为get_color()set_color()。通过内置函数dir()即可列出对象的属性。

源码

matplotlib.pyplot模块

def getp(obj, *args, **kwargs):return matplotlib.artist.getp(obj, *args, **kwargs)def get(obj, *args, **kwargs):return matplotlib.artist.get(obj, *args, **kwargs)def setp(obj, *args, **kwargs):return matplotlib.artist.setp(obj, *args, **kwargs)

matplotlib.artist模块

def getp(obj, property=None):if property is None:insp = ArtistInspector(obj)ret = insp.pprint_getters()print('\n'.join(ret))returnreturn getattr(obj, 'get_' + property)()# alias
get = getpdef setp(obj, *args, file=None, **kwargs):if isinstance(obj, Artist):objs = [obj]else:objs = list(cbook.flatten(obj))if not objs:returninsp = ArtistInspector(objs[0])if not kwargs and len(args) < 2:if args:print(insp.pprint_setters(prop=args[0]), file=file)else:print('\n'.join(insp.pprint_setters()), file=file)returnif len(args) % 2:raise ValueError('The set args must be string, value pairs')# put args into ordereddict to maintain orderfuncvals = OrderedDict((k, v) for k, v in zip(args[::2], args[1::2]))ret = [o.update(funcvals) for o in objs] + [o.set(**kwargs) for o in objs]return list(cbook.flatten(ret))

matplotlib之pyplot模块——获取/设置对象属性值(setp()、getp/get())相关推荐

  1. java根据属性获取对象_java反射工具类--通过指定属性名,获取/设置对象属性值

    java对象通过点运算符操作对象属性的方式没法使用for,while等循环,此工具主要解决这一问题. 例如:有一对象包含属性有一定规律 obj1: { name1: "张三", a ...

  2. C#通过属性名字符串获取、设置对象属性值

    目录 #通过反射获取对象属性值并设置属性值 0.定义一个类 1.通过属性名(字符串)获取对象属性值 2.通过属性名(字符串)设置对象属性值 #获取对象的所有属性名称及类型 #判断对象是否包含某个属性 ...

  3. 【MATLAB】基本绘图 ( 句柄值 | 对象句柄值获取 | 创建对象时获取句柄值 | 函数获取句柄值 | 获取 / 设置 对象属性 | 获取对象属性 )

    文章目录 一.对象句柄值获取 1.句柄值 2.创建对象时获取句柄值 3.函数获取句柄值 4.获取 / 设置 对象属性 二.获取对象属性 1.获取 线 对象属性 2.获取 坐标轴 对象属性 一.对象句柄 ...

  4. java 反射 设置属性_Java通过反射机制动态设置对象属性值的方法

    /** * MethodName: getReflection * Description:解析respXML 在通过反射设置对象属性值 * User: liqijing * Date:2015-7- ...

  5. 微信小程序.setData 设置对象属性值,不改变对象整体属性

    .setData 设置对象属性值 步骤一:data初始化数据 userInfo: { nickName:'昵称', avatarUrl:'https://c-ssl.duitang.com/tx.pn ...

  6. 关于java通过反射 获取/修改 对象属性值的一些注意事项

    getFields()与 getDeclaredFields() 前者能够获取所有public字段,包括父类字段: 后者可以所有public/protected/private类型的字段,但是不包括父 ...

  7. matplotlib之pyplot模块——获取或设置坐标轴刻度及标签(xticks、yticks)

    概述 xticks和yticks函数的作用都是获取或设置坐标轴的刻度及标签.其中 xticks函数作用是获取或设置x坐标轴的刻度及标签. yticks函数作用是获取或设置y坐标轴的刻度及标签. 两者参 ...

  8. 如何使用Vue.js中的set设置对象属性值

    1.问题背景 使用vue初始化一个对象v,并在data中初始化一个空对象obj,然后使用Vue.set()给对象obj添加属性 2.实现源码 <!DOCTYPE html> <htm ...

  9. 个人永久性免费-Excel催化剂功能第56波-获取Excel对象属性相关自定义函数

    之前零散开发过一些自定义函数获取Excel对象属性,此次再细细地把有价值的属性都一一给开发完成,某些场景下,有这些小函数还是可以比较方便地实现一些通过Excel界面没法轻松获取到的信息. 修复与更新 ...

最新文章

  1. EOS与以太坊有哪些区别?
  2. String性能提升10倍的几个方法!(源码+原理分析)
  3. [网络流24题-7]圆桌问题
  4. Python3之paramiko模块
  5. ansible(1)——安装
  6. 清华博士直播 | 如何让AI模型更皮实、更稳定?
  7. html中图片连续替换,C# 批量替换html中的图片 示例
  8. 各大公司官网都有哪些显而易见的Bug?
  9. perl 中文处理 乱码
  10. UEFI boot: how does that actually work, then?
  11. c语言链表小甲鱼,有大佬做过小甲鱼双向链表实践吗小甲鱼
  12. 海康大华ie插件开发
  13. PHP设置表格框线,ppt中表格边框线条怎样设置?
  14. ​VB语言凉凉了!微软宣布放弃不再​更新,GitHub正式收购 npm ,力挺整个JavaScript生态!...
  15. java中abstract什么意思中文,abstraction(abstraction什么意思中文)
  16. Kubernetes—Pod
  17. jQuery fadeIn淡入的使用
  18. OCR识别数学公式图片,获得原始公式代码
  19. finally这样写会吞掉异常?
  20. 探索Whisper语音识别

热门文章

  1. windows优化大师和闪游浏览器
  2. 【51单片机STC89C52】IO口模拟PWM控制SG90舵机
  3. H3C认证网络工程师(H3CNE)
  4. MATLAB如何将图片切分成任意M*N块
  5. html 视频列表页面,爱奇艺视频播放列表.html
  6. 网络空间安全 渗透 攻防6(DHCP部署与安全,DNS部署与安全)
  7. 一个例子弄清银行承兑汇票和商业承兑汇票
  8. java 汉米尔顿回路_《模拟电子技术基础》课程教学大纲
  9. 钉钉如何发起直播?钉钉电脑版直播发起方法简述
  10. 贝叶斯统计中的边缘分布