3

我想要标记,例如带有 +、x 或 . 的空方块,或者内部任何可调节厚度的东西;事实上,就像在 Origin 中一样。它似乎需要定制。

代码示例:

import numpy as np
import matplotlib.pyplot as plt

plt.plot(np.arange(10) ** 2,
         'k-',
         marker = 's',
         mfc = 'none',
         lw = 2,
         mew = 2,
         ms = 20)
plt.show()
4

2 回答 2

6

使用text,您可以使用字体中可用的任何字符。不过,您需要自己遍历它们,而且我认为您无法连续控制它们的线宽(当然,如果可用,您可以选择“粗体”等)。

在此处输入图像描述

from numpy import *
import matplotlib.pyplot as plt

symbols = [u'\u2B21', u'\u263A', u'\u29C6', u'\u2B14', u'\u2B1A', u'\u25A6', u'\u229E', u'\u22A0', u'\u22A1', u'\u20DF']

x = arange(10.)
y = arange(10.)

plt.figure()
for i, symbol in enumerate(symbols):
    y2 = y + 4*i
    plt.plot(x, y2, 'g')
    for x0, y0 in zip(x, y2):
        plt.text(x0, y0, symbol, fontname='STIXGeneral', size=30, va='center', ha='center', clip_on=True)

plt.show()

你也可以plot直接使用,虽然渲染看起来不太好,而且你对角色没有太多的控制。

plt.figure()
for i, symbol in enumerate(symbols):
    y2 = y + 4*i
    plt.plot(x, y2, 'g')
    marker = "$%s$" % symbol
    plt.plot(x, y2, 'k', marker=marker, markersize=30)

在此处输入图像描述

于 2013-04-08T15:55:01.797 回答
3

这是你想要的吗?

通过重叠绘制自定义标记

我通过过度绘制来做到这一点:

import numpy as np
import matplotlib.pyplot as plt

plt.plot(np.arange(10) ** 2,
         'k-',
         marker = 's',
         mfc = 'none',
         lw = 2,
         mew = 2,
         ms = 20)

plt.plot(np.arange(10) ** 2 + 20,
         'k-',
         marker = '+',
         mfc = 'none',
         lw = 2,
         mew = 2,
         ms = 20)
plt.plot(np.arange(10) ** 2 + 20,
         'k-',
         marker = 's',
         mfc = 'none',
         lw = 2,
         mew = 2,
         ms = 20)
plt.show()
于 2013-04-07T19:41:58.470 回答