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
。
如:
1 2 3 4 5 6 7 | 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
1 2 3 4 5 6 7 8 | 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
(突出效果)。
1 2 3 4 5 6 | 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
构造函数。如:
1 2 3 4 5 6 7 8 9 | 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() |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现