Skip to main content
 首页 » 编程设计

python之使用 Python (matplotlib) 的自定义标记

2025年05月04日25java哥

我想知道如何为这张图片中显示的黑色线条生成标记。 (来源:NCEP 和 NOAA) 它是标准天气图中 Storm 或飓风的标记。

我大概可以生成标记符号的图像文件。但是,我不知道如何告诉 matplotlib 使用图像作为标记。

请您参考如下方法:

标记看起来像 6。如果是这种情况,您可以使用 6 作为标记,如下所示:

import matplotlib.pyplot as plt 
 
x = [1,2,3,4] 
y = [2,3,1,4] 
 
plt.scatter(x,y, s= 100,marker="$6$") 
 
plt.show() 

如果这不是一个选项,您可以使用路径定义您的自定义标记。为此,需要知道路径的坐标。我在下面发明了一些值,也许它们已经适合这里的需要。

import numpy as np 
import matplotlib.pyplot as plt 
import matplotlib.path as mpath 
 
def get_hurricane(): 
    u = np.array([  [2.444,7.553], 
                    [0.513,7.046], 
                    [-1.243,5.433], 
                    [-2.353,2.975], 
                    [-2.578,0.092], 
                    [-2.075,-1.795], 
                    [-0.336,-2.870], 
                    [2.609,-2.016]  ]) 
    u[:,0] -= 0.098 
    codes = [1] + [2]*(len(u)-2) + [2]  
    u = np.append(u, -u[::-1], axis=0) 
    codes += codes 
 
    return mpath.Path(3*u, codes, closed=False) 
 
hurricane = get_hurricane() 
plt.scatter([1,1,2],[1.4,2.3,2.8], s=350, marker=hurricane,  
            edgecolors="crimson", facecolors='none', linewidth=2) 
plt.scatter([0,1,2],[1,3,1], s=150, marker=hurricane,  
            edgecolors="k", facecolors='none') 
plt.scatter([0,1.8,3],[0,2,4], s=150, marker="o",  
            edgecolors="k", facecolors='none') 
 
plt.show()