matplotlib之Line2D类详解

不同于之前几篇文章,这个Line2D是一个类对象,而不是一个方法,下面是来自官网的定义。

class  matplotlib.lines.Line2D(xdataydatalinewidth=Nonelinestyle=Nonecolor=Nonemarker=None, markersize=Nonemarkeredgewidth=Nonemarkeredgecolor=Nonemarkerfacecolor=Nonemarkerfacecoloralt='none'fillstyle=Noneantialiased=Nonedash_capstyle=Nonesolid_capstyle=Nonedash_joinstyle=Nonesolid_joinstyle=Nonepickradius=5drawstyle=Nonemarkevery=None**kwargs)

为什么要花一章节来介绍这个类呢,是因为我们平时用的最多的就是plt.plot()绘图方法,而这个函数的返回值就是一个Line2D的一个实例化对象,我们上一篇文章中说过,plt.plot()中有一个关键字参数列表**kwargs,这里面有很多关于线line的定制化设计参数,通过修改对应的关键字就可以创建出不同类型的线,这里再放上该方法的定义:

matplotlib.pyplot.plot(*args, scalex=True, scaley=True, data=None, **kwargs)

还是举例来说,要求绘制一个线宽为5的线。下面代码一是我们之前学习plt.plot()的时候的做法,那么问题来了,如果你想在绘制线了之后修改线宽怎么办,重新绘制一个不太好吧,所以这时候可以通过方式二的代码,将plot()返回的Line2D实例保存下来,通过面向对象的方式来调用相应的实例方法来修改对象的线宽等属性。这里再次强调plt.plot()函数的返回值是一个存放Line2D类型的元素的列表。这两种方法的实现效果是完全一样的,并且在plt.plot()中的**kwargs中支持的关键字都有其对应的setter方法。

代码一:
fig = plt.figure()
fig.suptitle('Figure: sample for Line2D')
plt.plot([1,4,2,3], linewidth=5)
plt.show()

代码二:
line, = plt.plot([1,4,2,3], linewidth=5)   #返回值是一个列表,类似[Line2D实例, ]
line.set_linewidth(5)

 这里偷懒从官网复制过来的Line2D的所有属性,可以看出来很多我们在学习plt.plot()绘图的时候都已经见过,可以再回去看看plot()的介绍。下面还是会选几个常用的,举例子来说明一下怎么使用即可。

PropertyDescription
agg_filtera filter function, which takes a (m, n, 3) float array and a dpi value, and returns a (m, n, 3) array
alphafloat or None
animatedbool
antialiased or aabool
clip_boxBbox
clip_onbool
clip_pathPatch or (Path, Transform) or None
color or ccolor
containsunknown
dash_capstyle{'butt', 'round', 'projecting'}
dash_joinstyle{'miter', 'round', 'bevel'}
dashessequence of floats (on/off ink in points) or (None, None)
data(2, N) array or two 1D arrays
drawstyle or ds{'default', 'steps', 'steps-pre', 'steps-mid', 'steps-post'}, default: 'default'
figureFigure
fillstyle{'full', 'left', 'right', 'bottom', 'top', 'none'}
gidstr
in_layoutbool
labelobject
linestyle or ls{'-', '--', '-.', ':', '', (offset, on-off-seq), ...}
linewidth or lwfloat
markermarker style string, Path or MarkerStyle
markeredgecolor or meccolor
markeredgewidth or mewfloat
markerfacecolor or mfccolor
markerfacecoloralt or mfcaltcolor
markersize or msfloat
markeveryNone or int or (int, int) or slice or List[int] or float or (float, float) or List[bool]
path_effectsAbstractPathEffect
pickerunknown
pickradiusfloat
rasterizedbool or None
sketch_params(scale: float, length: float, randomness: float)
snapbool or None
solid_capstyle{'butt', 'round', 'projecting'}
solid_joinstyle{'miter', 'round', 'bevel'}
transformmatplotlib.transforms.Transform
urlstr
visiblebool
xdata1D array
ydata1D array
zorderfloat

举例:

第一个是set_color,设置线的颜色,等价于set_c
fig = plt.figure()
fig.suptitle('Figure: sample for Line2D')
line, = plt.plot([1,4,2,3])
line.set_color('r')
plt.show()

第二个是set_drawstyle,设置阶梯式的绘图方式,等价于set_c,效果看图
line.set_ds('steps-mid')

第三个是set_linestyle,设置的是直线的类型,等价于set_ls
line.set_ls('--')

第四个是set_marker,设置每个点的类型
line.set_marker('*')



除了上面各种的setter之外还有对应的getter,这里就不一一绘制了,可以自己尝试一下,更多的方法属性请移步官网。

marker = line.get_marker()

color = line.get_color()

linewidth = line.get_linewidth()

 

 

 

 

 

 

 

 

 

 

 

  • 10
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值