【问题标题】:Can you add a number to a plotted line in matplotlib?你可以在 matplotlib 中的绘图线上添加一个数字吗?
【发布时间】:2020-09-24 00:02:31
【问题描述】:

我正在使用 matplotlib.pyplot 绘制不同的线条。我可以添加一个带有标签的图例,以通过颜色判断哪条线是哪条线。不幸的是我是色盲。是否可以在每行中写入一个嵌入的数字?数字可能如下所示。

然后这些可以识别每一行。

【问题讨论】:

  • check this 用于自定义标记。如果可以的话,您也可以尝试使用适合色盲的颜色图。
  • @warped 你也可以将标记添加到图例中吗?

标签: python matplotlib


【解决方案1】:

有一个不错的小包 matplotlib-label-lines 可以完成此操作(代码是 github 上的 here)。

安装此软件包后,您的代码可能如下所示:

import numpy as np
import matplotlib.pyplot as plt
import labellines

x = np.linspace(0, 5, 100)

fig, ax = plt.subplots(1, 1)
ax.plot(x, x**2, linewidth=2, label="line example")
labellines.labelLines(ax.get_lines())

plt.show()

这会给你这样的东西。

您也可以在图例中使用不同的线条样式,而不是颜色。

【讨论】:

  • 你能在传说中做同样的事情吗?
  • 是的,只需添加命令ax.legend(),然后线条将在绘图和图例上标记。
【解决方案2】:

我的回答是基于this question

您可以在 matplotlib 中使用乳胶数学符号。 由于 $1$ 算作乳胶数学符号,因此您可以将其用作标记。

以 0,1,2 为例:

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

for a in range(3):

    plt.plot(x, a*y, alpha=0.5, marker='${}$'.format(a), markersize=10, label=a)

plt.legend()
plt.show()

编辑

在曲线上仅绘制一次数字

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

colors = ['teal', 'darkslateblue', 'orange']

for a in range(3):

    plt.plot(x, a*y, c=colors[a])
    plt.plot(x[a+3], a*y[a+3], alpha=0.5, marker='${}$'.format(a), markersize=10, label=a, c=colors[a])

plt.legend()
plt.show()

【讨论】:

  • 是否可以每行只有一次标签?
  • 非常感谢。
猜你喜欢
  • 2013-09-18
  • 1970-01-01
  • 1970-01-01
  • 2012-08-21
  • 2018-10-02
  • 2013-05-03
  • 2013-09-21
  • 2014-12-02
  • 2021-10-16
相关资源
最近更新 更多