matplotlib---6.path effect
1.matplotlib
的patheffects
模块
matplotlib
的patheffects
模块提供了一些函数来绘制path effect
,该模块还定义了很多effect
类。可以应用path effect
的Artist
有:Patch
、Line2D
、Collection
以及Text
。每个Artist
的path effect
可以通过.set_path_effects()
方法控制,其参数是一个可迭代对象,迭代的结果是AbstractPathEffect
实例;也可以通过Artist
构造函数的path_effects=
关键字参数控制。
注意:effect
类的关键字参数比如背景色、前景色等与Artist
不同。因为这些effect
类是更低层次的操作。
2.所有的effect
类都继承自matplotlib.patheffects.AbstractPathEffect
类。AbstractPathEffect
的子类要覆盖AbstractPathEffect
类的.draw_path(...)
方法。
AbstractPathEffect
类的构造函数有个offset
关键字参数,表示effect
偏移(默认为(0,0)
)
3.最简单的effect
是normal effect
,它是matplotlib.patheffects.Normal
类。它简单的绘制Artist
,不带任何effect
。
如:
import matplotlib.pyplot as plt import matplotlib.patheffects as path_effects fig = plt.figure(figsize=(5, 1.5)) text = fig.text(0.5, 0.5, 'Hello path effects world!\nThis is the normal path effect.', ha='center', va='center', size=20) text.set_path_effects([path_effects.Normal()]) plt.show()
4.我们可以在基于Path
的Artist
上应用drop-shadow effect
(下沉效果)。
例如可以在filled patch Artist
上应用matplotlib.patheffects.SimplePatchShadow
,在line patch Artist
上应用matplotlib.patheffects.SimpleLineShadow
。
可以通过path_effects=[path_effects.with*()]
来指定path_effects
参数,或者直接通过path_effects=[path_effects.SimpleLineShadow(),path_effects.Normal()]
来指定path_effects
参数。
- 前者会自动地在
normal effect
后跟随指定的effect
- 后者会显式的指定
effect
import matplotlib.pyplot as plt import matplotlib.patheffects as path_effects text = plt.text(0.5, 0.5, 'Hello path effects world!', path_effects=[path_effects.withSimplePatchShadow()]) plt.plot([0,3,2,5],linewidth=5,color='blue', path_effects=[path_effects.SimpleLineShadow(),path_effects.Normal()]) text.set_path_effects([path_effects.Normal()]) plt.show()
5.Strok effect
可以用于制作出stand-out effect
(突出效果)。
import matplotlib.pyplot as plt import matplotlib.patheffects as path_effects fig = plt.figure(figsize=(8,6)) text = plt.text(0.5,0.5,'Hello path effects world!',color='white',ha='center',va='center',size=30) text.set_path_effects([path_effects.Stroke(linewidth=3,foreground='black'),path_effects.Normal()]) plt.show()
6.PathPatchEffect
是一个通用的path effect
类。如果对某个PathPatch
设置了PathPatchEffect
,则该effect
的.draw_path(...)
方法执行的是由初始PathPatch
计算的得到的一个新的PathPatch
。
与一般的effect
类不同,PathPatchEffect
类的关键字参数是与PathPatch
一致的,因为除了offset
关键字参数外,其他的任何关键字参数都会传递给PathPatch
构造函数。如:
import matplotlib.pyplot as plt import matplotlib.patheffects as path_effects fig = plt.figure(figsize=(8, 1)) t = fig.text(0.02, 0.5, 'Hatch shadow', fontsize=75, weight=1000, va='center') t.set_path_effects([path_effects.PathPatchEffect(offset=(4, -4), hatch='xxxx', facecolor='gray'), path_effects.PathPatchEffect(edgecolor='white', linewidth=1.1, facecolor='black')]) plt.show()