如何在Matplotlib的figtext中插入标记符号?
在Matplotlib的figtext中插入标记符号的解决方法
方法1:使用对应Unicode符号直接插入文本
Matplotlib的多数常用标记都有匹配的Unicode字符,直接在figtext的字符串里使用这些字符就能显示标记样式,简单高效。
常用标记的Unicode对应示例:
- 点标记(
.):·(U+00B7) - 圆圈标记(
o):○(U+25CB) - 方块标记(
s):□(U+25A1) - 上三角标记(
^):△(U+25B3) - 叉号标记(
x):✕(U+2715)
示例代码:
import matplotlib.pyplot as plt # 示例散点图 plt.scatter([1,2,3], [4,5,6], marker='.', color='red') plt.scatter([1,2,3], [7,8,9], marker='o', color='blue') # 插入带标记的说明文本 plt.figtext(0.1, 0.1, "· 2020年数据(红色)") plt.figtext(0.1, 0.07, "○ 2021年数据(蓝色)") plt.show()
方法2:手动绘制标记+文本(适配特殊标记)
如果需要使用Matplotlib独有的特殊标记(无对应Unicode),可以先在指定位置绘制标记,再在旁侧添加说明文本,确保样式完全匹配。
示例代码:
import matplotlib.pyplot as plt # 示例散点图(菱形标记) plt.scatter([1,2,3], [4,5,6], marker='D', color='green') ax = plt.gca() # 在归一化坐标(0.1, 0.1)处绘制菱形标记 ax.scatter(0.1, 0.1, marker='D', color='green', transform=ax.transAxes) # 在标记右侧添加说明文本 plt.figtext(0.12, 0.095, "2022年数据(绿色)") plt.show()
也可以用annotate一步完成标记+文本的组合:
import matplotlib.pyplot as plt plt.scatter([1,2,3], [4,5,6], marker='*', color='purple') plt.annotate( '2023年数据(紫色)', xy=(0.1, 0.1), # 标记位置 xytext=(0.12, 0.1), # 文本位置 marker='*', color='purple', xycoords='axes fraction', textcoords='axes fraction', va='center' ) plt.show()
原代码无效原因
你直接传入mmark.MarkerStyle('.')对象给plt.figtext,但figtext仅接受字符串类型内容,因此会将对象转换为其字符串描述(即<matplotlib.markers.MarkerStyle ...>),而非渲染标记样式。
内容的提问来源于stack exchange,提问作者Cattoaster
相关产品推荐
相关产品推荐

