繁体   English   中英

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

[英]Custom markers using Python (matplotlib)

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

在此处输入图片说明

我可能可以生成标记符号的图像文件。 但是,我不知道如何告诉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()

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM