在同一轴上绘制多个标签

时间:2018-03-12 15:36:12

标签: python matplotlib

考虑一个简单的情节,绘制两个不同的群体:

enter image description here

我想添加两个单独的y标签,一个用于顶部填充,另一个用于在同一个左y轴下面的一个。我所见过的所有类似问题都在两个不同的轴上处理标签(即:一个在左边,一个在右边),这不是我需要的。

我该怎么做?

import numpy as np
import matplotlib.pyplot as plt

N = 50
a = np.random.uniform(100., 120., N)
b = np.random.uniform(10., 20., N)

plt.scatter(range(N), a)
plt.scatter(range(N), b)
plt.show()

此问题与向here所述的图例添加标签无关。

1 个答案:

答案 0 :(得分:4)

您可能会误用y轴的次要刻度将标签放在这些位置。在这里,我们可以采用数据的均值来创建一个小问题。可以关闭勾号,并且可以对标签进行填充,旋转和对齐,使其看起来与通常的ylabel类似。

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker as mticker

N = 50
a = np.random.uniform(100., 120., N)
b = np.random.uniform(10., 20., N)

plt.scatter(range(N), a)
plt.scatter(range(N), b)

ax = plt.gca()
ax.yaxis.set_minor_locator(mticker.FixedLocator((a.mean(), b.mean())))
ax.yaxis.set_minor_formatter(mticker.FixedFormatter(("Label A", "Label B")))
plt.setp(ax.yaxis.get_minorticklabels(), rotation=90, size=15, va="center")
ax.tick_params("y",which="minor",pad=25, left=False)


plt.show()

enter image description here