matplotlib之pyplot模块——获取/设置对象属性值(setp()、getp/get())
当前有效matplotlib
版本为:3.4.1
。
概述
pyplot
模块提供了获取/设置对象属性值的接口。功能类似于Python内置函数getattr
和setattr
。从源码上来看,get()
是getp()
的别名,两者是等价的。setp()
、getp()
的底层实现是基于Python内置函数getattr
和setattr
。
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())相关推荐
- java根据属性获取对象_java反射工具类--通过指定属性名,获取/设置对象属性值
java对象通过点运算符操作对象属性的方式没法使用for,while等循环,此工具主要解决这一问题. 例如:有一对象包含属性有一定规律 obj1: { name1: "张三", a ...
- C#通过属性名字符串获取、设置对象属性值
目录 #通过反射获取对象属性值并设置属性值 0.定义一个类 1.通过属性名(字符串)获取对象属性值 2.通过属性名(字符串)设置对象属性值 #获取对象的所有属性名称及类型 #判断对象是否包含某个属性 ...
- 【MATLAB】基本绘图 ( 句柄值 | 对象句柄值获取 | 创建对象时获取句柄值 | 函数获取句柄值 | 获取 / 设置 对象属性 | 获取对象属性 )
文章目录 一.对象句柄值获取 1.句柄值 2.创建对象时获取句柄值 3.函数获取句柄值 4.获取 / 设置 对象属性 二.获取对象属性 1.获取 线 对象属性 2.获取 坐标轴 对象属性 一.对象句柄 ...
- java 反射 设置属性_Java通过反射机制动态设置对象属性值的方法
/** * MethodName: getReflection * Description:解析respXML 在通过反射设置对象属性值 * User: liqijing * Date:2015-7- ...
- 微信小程序.setData 设置对象属性值,不改变对象整体属性
.setData 设置对象属性值 步骤一:data初始化数据 userInfo: { nickName:'昵称', avatarUrl:'https://c-ssl.duitang.com/tx.pn ...
- 关于java通过反射 获取/修改 对象属性值的一些注意事项
getFields()与 getDeclaredFields() 前者能够获取所有public字段,包括父类字段: 后者可以所有public/protected/private类型的字段,但是不包括父 ...
- matplotlib之pyplot模块——获取或设置坐标轴刻度及标签(xticks、yticks)
概述 xticks和yticks函数的作用都是获取或设置坐标轴的刻度及标签.其中 xticks函数作用是获取或设置x坐标轴的刻度及标签. yticks函数作用是获取或设置y坐标轴的刻度及标签. 两者参 ...
- 如何使用Vue.js中的set设置对象属性值
1.问题背景 使用vue初始化一个对象v,并在data中初始化一个空对象obj,然后使用Vue.set()给对象obj添加属性 2.实现源码 <!DOCTYPE html> <htm ...
- 个人永久性免费-Excel催化剂功能第56波-获取Excel对象属性相关自定义函数
之前零散开发过一些自定义函数获取Excel对象属性,此次再细细地把有价值的属性都一一给开发完成,某些场景下,有这些小函数还是可以比较方便地实现一些通过Excel界面没法轻松获取到的信息. 修复与更新 ...
最新文章
- EOS与以太坊有哪些区别?
- String性能提升10倍的几个方法!(源码+原理分析)
- [网络流24题-7]圆桌问题
- Python3之paramiko模块
- ansible(1)——安装
- 清华博士直播 | 如何让AI模型更皮实、更稳定?
- html中图片连续替换,C# 批量替换html中的图片 示例
- 各大公司官网都有哪些显而易见的Bug?
- perl 中文处理 乱码
- UEFI boot: how does that actually work, then?
- c语言链表小甲鱼,有大佬做过小甲鱼双向链表实践吗小甲鱼
- 海康大华ie插件开发
- PHP设置表格框线,ppt中表格边框线条怎样设置?
- ​VB语言凉凉了!微软宣布放弃不再​更新,GitHub正式收购 npm ,力挺整个JavaScript生态!...
- java中abstract什么意思中文,abstraction(abstraction什么意思中文)
- Kubernetes—Pod
- jQuery fadeIn淡入的使用
- OCR识别数学公式图片,获得原始公式代码
- finally这样写会吞掉异常?
- 探索Whisper语音识别