Matplotlib使用Path实例创建自定义标记报错求助
解决Matplotlib中使用Path创建自定义标记时的TypeError问题
我刚帮你排查了代码里的问题,你遇到的TypeError: 'Path' object does not support indexing是因为Matplotlib的plot函数不能直接把Path实例当作marker参数传入——内部逻辑会尝试对传入的marker对象做索引操作,但Path并不支持这种行为。
修正方案:用MarkerStyle包装Path对象
要让自定义Path作为标记生效,你需要把Path实例包装进matplotlib.markers.MarkerStyle对象里,再传给marker参数。下面是修正后的完整代码:
import matplotlib.pyplot as plt import matplotlib as mpl from matplotlib.markers import MarkerStyle # 导入MarkerStyle x = [1, 2, 3, 4] y = [1, 4, 9, 6] # 创建自定义路径 custom_path = mpl.path.Path([[0,0],[1,1],[1,0]], [1,2,2]) # 用MarkerStyle包装路径 custom_marker = MarkerStyle(marker=custom_path) plt.plot(1.5, 0, marker=custom_marker, markersize=15) # 传入包装后的标记,可调整大小 plt.plot(x, y, 'ro') plt.subplots_adjust(bottom=0.15) plt.show()
额外说明
- 如果你需要调整标记的旋转、缩放等样式,也可以通过
MarkerStyle的属性(比如rotation、scale)来设置 - 你的Path定义是一个直角三角形的轮廓,包装后就能正常显示为自定义标记了
内容的提问来源于stack exchange,提问作者Sebastian
相关产品推荐
相关产品推荐

